您好我有一个包含以下字段的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“。我该如何解决这个问题?
答案 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中处理它。