0

在将行插入到不包含唯一索引的表中时,我将如何防止竞争条件。例如说我的桌子是....

key | slot | label
------------------
 1  |  1   | some
 1  |  2   | some
 2  |  1   | some
 2  |  2   | some

...是防止这种竞争条件创建复合唯一字段(例如“key:slot”)的唯一方法,例如

id  | key | slot | label
------------------------
1:1 |  1  |  1   | some
1:2 |  1  |  2   | some
2:1 |  2  |  1   | some
2:2 |  2  |  2   | some

...或者有没有更有效的方法逃脱了我?如果我要在执行插入后检查重复行并在找到任何发现时回滚事务怎么办?

4

2 回答 2

2

实际上你可以在没有key:slot专栏的情况下做到这一点。您可以在表上定义唯一的复合键。例如,

ALTER TABLE tableName ADD CONTRAINT tb_uq UNIQUE (`key`, slot)
于 2013-02-28T04:02:19.973 回答
1

如何在插入时使用LOCK TABLES语法来防止竞争条件?

于 2013-02-28T04:04:12.127 回答