mysql同时插入限制

时间:2012-02-07 11:47:04

标签: mysql

您好我有一个包含以下字段的mysql表

                    A INT, B INT, C INT, D INT, Count INT 

我希望插入对于'A','B','C'ANT'D'的值是唯一的。即如果对于'A','B','C'和'D'的特定值存在'Count'条目,那么对于'A'的相同值,将只有'Count'字段的UPDATION,' B','C'和'D'。问题是超过1个用户正在尝试同时向数据库插入相同的值,因此有可能多次向数据库输入相同的值。我使用php检查是否存在特定值'A的条目','B','C'和'D',如果是,我可以进行更新。但是有史以来第一次没有条目的情况下,有2个或更多用户可以同时为A','B','C'和'D'插入相同的值,例如

                           A=10, B=8, C=4, D=5 AND Count=1

                           A=10, B=8, C=4, D=5 AND Count=2

但我希望第一个(第二个)用户插入“A = 10,B = 8,C = 4,D = 5 AND Count = 1”,并且行更新为“A = 10,B = 8即使两个用户都试图同时插入值,对于第二(第一)用户,C = 4,D = 5 AND Count = 3“。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

1)不要使用'count'作为列名 - 它是MySQL关键字

2)您需要在想要查看重复项的列上创建一个UNIQUE键,然后使用'on duplicate key update'功能:http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

插入mytable (a,b,c,d,entryCount) 值 (?,?,?,?,0) 重复密钥更新 a =?,b =?,c =?,d = ?, entryCount = entryCount + 1;

该代码在MySQL级别是“线程安全的”,因此您根本不需要在PHP中处理它。