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