我正在运行以下查询...我遇到的问题是它使用0-27行正确保存id
字段但是它尝试复制第0行。任何想法为什么这是试图复制第0行?
INSERT INTO
deal (`id`, `site_id`)
VALUES (NULL, 1)
ON DUPLICATE KEY UPDATE `id` = NULL,`site_id` = 1
答案 0 :(得分:2)
来自manual:
您还可以向列显式指定NULL或0以生成序列号。
因此,有效地,输入(0,'whatever')
被视为('the next autoincrement id','whatever')
。就MySQL而言,没有重复的关键问题。您可以使用NO_AUTO_VALUE_ON_ZERO
绕过此操作。请注意,建议不要使用0
作为标识符。
答案 1 :(得分:-2)
PRIMARY KEY在MySQL中不能为NULL,因此UPDATE id = NULL
已投放到UPDATE id = 0
。
另请参阅:http://www.xaprb.com/blog/2009/09/12/the-difference-between-a-unique-index-and-primary-key-in-mysql/