我正在尝试检查客户是否存在会话,以便我可以使用新会话详细信息更新会话或为客户插入会话。我正在使用以下声明:
INSERT INTO sessions (customerid, productlist, date)
VALUES('33', '{"68":1,"72":1}', '2016-03-03 13:54:56')
ON DUPLICATE KEY UPDATE customerid=VALUES(customerid)
当我运行此命令时,即使会话已存在,该语句也会为客户插入会话。
答案 0 :(得分:-1)
确保使用:UNIQUE key
和customerid
列创建pdoructlist
。
答案 1 :(得分:-1)
ON DUPLICATE KEY UPDATE
需要UNIQUE INDEX
表。它允许在INSERT
因UNIQUE INDEX
而失败时更新已存在的行。
UNIQUE INDEX
表中sessions
的候选人是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
UNIQUE INDEX
的{{1}}语句是:
sessions
或者,更好的是,make是表格的ALTER TABLE `sessions`
ADD UNIQUE INDEX `customerid` (`customerid`)
(如果表格中没有表格:
PRIMARY KEY