【发布时间】:2012-06-03 04:29:26
【问题描述】:
当我尝试选择和更新同一个表时,mysql 给出错误
error
#1241 - Operand should contain 1 column(s)
触发器是
DELIMITER $$
CREATE TRIGGER visitor_validation
BEFORE INSERT ON ratingsvisitors
FOR EACH ROW
BEGIN
SET @ifexists = (SELECT * FROM ratingcounttracks WHERE userid=New.vistorid AND likedate=New.likevalidation AND countfor=New.likeordislike);
IF (@ifexists = NULL) THEN
INSERT INTO ratingcounttracks(userid, likedate, clickcount,countfor) values (New.vistorid, New.likevalidation ,'1',New.likeordislike);
ELSE
UPDATE ratingcounttracks SET clickcount=clickcount+1 WHERE userid=New.vistorid AND likedate=New.likevalidation AND countfor=New.likeordislike;
END IF;
END$$
【问题讨论】:
-
您正在尝试做的事情称为 UPSERT:“如果存在则更新,否则插入”。您可能想了解更多关于它的信息,因为有不同的方法。此站点上有关于 MySQL 中的 upsert 的问题。您可以从 this one 开始,然后按照其 Linked 部分中的内容进行操作。
标签: mysql sql triggers mysql-error-1241