簡體   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