[英]MySQL Insert else delete stored procedure
我目前正在开发一个切换系统,该系统将允许用户向集合中添加项目。 然后,他们可以删除从数据库中删除行的项目。 使用2个查询可以轻松完成此操作,但是我想用存储过程替换它,以节省使用2个查询进行此操作的时间。 我想做的是检查行是否存在,是否删除它,如果不插入它。
我正在使用phpmyadmin,正在尝试创建一个例程。 我添加了2(itemid,使用设置为“ IN”的参数
IF (SELECT 1 = 1 FROM useritems WHERE ItemID = itemid AND UserID = userid) THEN
BEGIN
DELETE FROM useritems WHERE ItemID = itemid AND UserID = userid
END;
ELSE
BEGIN
INSERT INTO useritems (ItemID, UserID) VALUES(itemid, userid)
END;
END IF;
当我尝试提交它时,出现以下错误
MySQL said: #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'END;
ELSE
BEGIN
INSERT INTO useritems (ItemID, UserID) VALUES(ite' at line 4
IF (SELECT * FROM useritems WHERE ItemID = itemid AND UserID = userid)
THEN
DELETE FROM useritems WHERE ItemID = itemid AND UserID = userid
ELSE
INSERT INTO useritems (ItemID, UserID) VALUES(itemid, userid)
END IF;
这是MySQL
IF
语句的正确语法:
IF search_condition THEN statement_list [ELSEIF search_condition THEN statement_list] ... [ELSE statement_list] END IF
因此,将您的代码修改为:
IF EXISTS (SELECT 1 FROM useritems WHERE ItemID = itemid AND UserID = userid) THEN
DELETE FROM useritems WHERE ItemID = itemid AND UserID = userid;
ELSE
INSERT INTO useritems (ItemID, UserID) VALUES(itemid, userid);
END IF;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.