情景:
用户A和B同时执行select id from Product where id = ?
,如果没有结果,则两者都创建具有给定ID的新产品。
问题:
这可能会导致重复行的创建。
问题:
有哪些可能的策略来防止这种情况?我知道我可以使用复合/唯一键来保证这一点,但还有其他策略吗?是否有任何SQL语句来锁定具有相同参数的查询?
答案 0 :(得分:2)
您可以使用unique constraints
ALTER TABLE Persons ADD UNIQUE (P_Id)
或
ALTER TABLE Persons
ADD CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName)
这样就不可能插入副本。
答案 1 :(得分:0)
在相关字段上放置UNIQUE
键:
https://dev.mysql.com/doc/refman/5.0/en/constraint-primary-key.html