我正在運行以下查詢...我遇到的問題是它正確保存id
字段的行0-27,但它然後嘗試重複行0.爲什麼這是試圖重複第0行的任何想法?MySQL:在主鍵上插入重複更新問題
INSERT INTO
deal (`id`, `site_id`)
VALUES (NULL, 1)
ON DUPLICATE KEY UPDATE `id` = NULL,`site_id` = 1
我正在運行以下查詢...我遇到的問題是它正確保存id
字段的行0-27,但它然後嘗試重複行0.爲什麼這是試圖重複第0行的任何想法?MySQL:在主鍵上插入重複更新問題
INSERT INTO
deal (`id`, `site_id`)
VALUES (NULL, 1)
ON DUPLICATE KEY UPDATE `id` = NULL,`site_id` = 1
主鍵不能爲NULL在MySQL,所以你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/
從manual:
您也可以明確指明NULL或0到列生成的序列號。
因此,有效地輸入(0,'whatever')
被視爲('the next autoincrement id','whatever')
。就MySQL而言,沒有重複的關鍵問題。您可以通過使用NO_AUTO_VALUE_ON_ZERO
來繞過此操作。請注意,不建議使用0
作爲標識符。
什麼是交易表?查詢的目的是什麼? –
是* site_id * UNIQUE?如果不是'ON DUPLICATE KEY'的重點?每個INSERT都會得到一個新的* id *。 – nobody