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