首页 > mysql插入问题

mysql插入问题

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


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


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


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


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


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


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


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


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


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


insert ignore不行吗

【热门文章】
【热门文章】