2016-05-26 66 views
0

我目前正在開發一個切換系統,允許用戶將項目添加到集合中。然後他們可以刪除從數據庫中刪除該行的項目。這很容易使用2個查詢來完成,但我想用存儲過程替換它,以便不必使用2個查詢來完成此操作。我想要做的是檢查一行是否存在,如果它刪除它,如果沒有插入它。MySQL插入其他刪除存儲過程

我正在使用phpmyadmin,我正在嘗試創建一個例程。我已經添加了被設置爲「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; 

2(itemid的,使用的參數當我嘗試提交它,我得到以下錯誤

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 
+0

'END'不應該有一個分號,但你的語句(查詢)應該。 –

+0

在定義存儲過程之前,您是否更改了分隔符? –

+0

我沒有改變任何即時通訊,試圖將其粘貼到使用數據庫的例程選項卡。我沒有修改任何東西在這樣做 –

回答

0

這是正確的語法IF聲明MySQL

IF search_condition THEN statement_list [ELSEIF search_condition THEN statement_list] ... [ELSE statement_list] END IF

參考,以MySQL Dev Site

所以修復你的代碼是這樣的:

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; 
0
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; 
+0

請在您的回答中添加一些說明。只是傾銷SQL不會幫助任何人,並且被人詬病。請修改這個和你的其他答案。謝謝! –

相關問題