MySQL:使用主键插入重复更新问题

时间:2011-07-17 13:14:06

标签: mysql

我正在运行以下查询...我遇到的问题是它使用0-27行正确保存id字段但是它尝试复制第0行。任何想法为什么这是试图复制第0行?

INSERT INTO
        deal (`id`, `site_id`)
        VALUES (NULL, 1)
ON DUPLICATE KEY UPDATE `id` = NULL,`site_id` = 1

2 个答案:

答案 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/