mysql插入问题

两个用户同时插入一条数据,
insert into table set name='tom',num=2
insert into table set name='jack',num=2
,但是业务逻辑不允许num值重复出现。
怎么限制mysql不让插入重复数据?
1.添加联合唯一索引,但是程序会报错,感觉不可行。
有其他方法没?

阅读 4.6k
10 个回答

那就是每次插入之前都得去查询一下,表中这个num字段是否存在要插入的值;还有考虑到并发到情况。对不!要么用mysql事务;要么mysql锁表机制

使用唯一索引,在插入这个场景中使用事务处理,抛出事务提醒失败有重复值。

程序报错?
你捕获这个对应的异常,然后返回,做一个业务性的说明就可以了。

insert ignore不行吗

建议数据库自己的校验机制,就像你的说唯一约束或索引都可以,在应用能够捕获到数据库的报错信息,做相应得的说明就可以了。

针对 num 字段加上唯一索引.

name num 字段建立联合唯一索引(保证数据库里的数据没有重复 是干净的) 然后php程序来捕获MySQL这个异常

新手上路,请多包涵

num字段唯一索引就可以了!程序自己处理报错就好。如果只是你说的这点需求就不要用事务了

字段加上唯一约束,如果插入不成功,受影响的行肯定是0,MySQLi可以用affected_rows,PDO可以用rowCount()拿到受影响的行数,根据这个数进行判断,如果失败,提示用户操作失败即可.

新手上路,请多包涵

设置触发器当出现重复值时自动删除改行记录 应该就不会出现报错信息了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题