ON DUPLICATE KEY UPDATE
需要表格上的UNIQUE INDEX
。當INSERT
由於UNIQUE INDEX
而失敗時,它允許更新已經存在的行。
sessions
表中的UNIQUE INDEX
的候選人爲customerid
。你有這樣的索引嗎?
無論如何,您發佈的查詢沒有任何意義。 ON DUPLICATE KEY UPDATE
當你想要插入一個新行時,踢入,並且表中已經存在你想要放入的值customerid
。 UNIQUE INDEX
可以防止插入,ON DUPLICATE KEY UPDATE
允許更新現有行的某些其他列。
當customerid
是UNIQUE INDEX
,customerid=VALUES(customerid)
是no-op。
你可能想要的是:
INSERT INTO sessions (customerid, productlist, date)
VALUES('33', '{"68":1,"72":1}', '2016-03-03 13:54:56')
ON DUPLICATE KEY UPDATE productlist=VALUES(productlist), date=VALUES(date)
的SQL
聲明作出customerid
表sessions
的UNIQUE INDEX
是:
ALTER TABLE `sessions`
ADD UNIQUE INDEX `customerid` (`customerid`)
,或者甚至更好,使是表的PRIMARY KEY
(如果桌子還沒有一個:
ALTER TABLE `sessions`
ADD PRIMARY KEY (`customerid`)
爲什麼不製作主鍵/唯一鍵?那麼它會錯誤的,如果它的重複 – KDOT