簡體   English   中英

Mysql 存儲過程創建與 TRANSACTION 問題

[英]Mysql Stored Procedure creation with TRANSACTION problem

我必須創建這樣一個程序,但我得到了錯誤,我只是通過刪除其他程序中的 BEGIN 和 END 來解決它,但是這個程序有 TRANSACTION,我找不到解決方案。


CREATE PROCEDURE sp_device_post_device_status (IN deviceID int(11), IN zone int(11), IN stat int(11)) 
BEGIN 
    START TRANSACTION
    UPDATE device_statuses
    SET is_last_one = 0
    WHERE id_device = deviceID
      AND is_last_one = 1
      AND zoneNo = zone;
   INSERT INTO device_statuses (id_device, zoneNo, status, is_last_one)
    VALUES (deviceID, zone, stat, 1);
    commit
END;

它返回:

SQL query: Copy


CREATE PROCEDURE sp_device_post_device_status (IN deviceID int(11), IN zone int(11), IN stat int(11)) 
BEGIN 
    START TRANSACTION
    UPDATE device_statuses
    SET is_last_one = 0
    WHERE id_device = deviceID
      AND is_last_one = 1
      AND zoneNo = zone
MySQL said: Documentation

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'UPDATE device_statuses
    SET is_last_one = 0
    WHERE id_device = deviceID
' at line 4

我是這樣解決的

DELIMITER $$ CREATE PROCEDURE sp_device_post_device_status (IN deviceID int(11), IN zone int(11), IN stat int(11)) BEGIN START TRANSACTION;

UPDATE device_statuses
SET is_last_one = 0
WHERE id_device = deviceID
  AND is_last_one = 1
  and zoneNo = zone;

insert into device_statuses (id_device, zoneNo, status, is_last_one)
VALUES (deviceID, zone, stat, 1);
commit;

結束$$分隔符;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM