繁体   English   中英

MySQL插入否则删除存储过程

[英]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

参考MySQL开发站点

因此,将您的代码修改为:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM