说,我有一个简单的表:id
作为主键,和field
。然后我做: INSERT INTO table(id,field) VALUES (1,'blah')
然后我再做一次。所以,我怎样才能使MySQL回报下列内容:如何让MySQL在重复键上返回冲突键?看看里面
ID
因此,它的工作原理是SELECT-ING冲突的关键?
说,我有一个简单的表:id
作为主键,和field
。然后我做: INSERT INTO table(id,field) VALUES (1,'blah')
然后我再做一次。所以,我怎样才能使MySQL回报下列内容:如何让MySQL在重复键上返回冲突键?看看里面
ID
因此,它的工作原理是SELECT-ING冲突的关键?
我不认为这是可能没有一些代码,MySQL会返回一个通用的重复键错误
随着码解决方案:
是否使用一个AUTO_INCREMENT列?
如果使用INSERT忽略和行被忽略,
的AUTO_INCREMENT计数器不增加和LAST_INSERT_ID()返回0,
这反映出没有行插入。
这样:
您可以考虑以下...
DROP TABLE IF EXISTS my_table;
CREATE TABLE my_table(my_id INT NOT NULL PRIMARY KEY,my_field VARCHAR(12) NOT NULL,conflict TINYINT NOT NULL DEFAULT 0);
INSERT INTO my_table (my_id,my_field) VALUES (1,'blah') ON DUPLICATE KEY UPDATE conflict = 1;
SELECT * FROM my_table WHERE conflict = 1;
Empty set (0.00 sec)
INSERT INTO my_table (my_id,my_field) VALUES (1,'blah') ON DUPLICATE KEY UPDATE conflict = 1;
Query OK, 2 rows affected (0.07 sec)
SELECT * FROM my_table WHERE conflict = 1;
+-------+----------+----------+
| my_id | my_field | conflict |
+-------+----------+----------+
| 1 | blah | 1 |
+-------+----------+----------+
那么,它只是不会让你“再来一次”,所以绝不会有矛盾的钥匙,只要你定义“ID”为一个主键。你为什么需要这个? – Aioros
MySQL将返回一个重复键错误 - 如何分析它取决于你的语言和API。 –