我需要做一个sql事务,只有当一个日期大于另一个时才提交插入,否则回滚..
这是我的:
START TRANSACTION;
INSERT INTO Cene_Prenocevanja VALUES (6, 2, 10.00, 22.39, str_to_date('01-01-1990', '%d-%m-%Y'), str_to_date('01-01-1989', '%d-%m-%Y'));
CREATE VIEW zacasni AS
SELECT Zacetek_Veljavnosti FROM Cene_Prenocevanja WHERE IDCene_Prenocevanja=6
INTO @zacetek;
SELECT Konec_Veljavnosti FROM Cene_Prenocevanja WHERE IDCene_Prenocevanja=6
INTO @konec;
IF @zacetek < @konec THEN
COMMIT;
ELSE
ROLLBACK;
END IF;
这些是我的回应...
IF 在这个位置无效
错误代码:1064。您的 SQL 语法有误;检查与您的 MySQL 服务器版本对应的手册,了解在第 1 行的“IF @zacetek < @konec THEN COMMIT”附近使用的正确语法
最佳答案
像这样? (来自 krokodilko 的评论)
START TRANSACTION;
CREATE VIEW zacasni AS
SELECT Zacetek_Veljavnosti FROM Cene_Prenocevanja WHERE IDCene_Prenocevanja=6
INTO @zacetek;
SELECT Konec_Veljavnosti FROM Cene_Prenocevanja WHERE IDCene_Prenocevanja=6
INTO @konec;
IF @zacetek < @konec THEN
INSERT INTO Cene_Prenocevanja VALUES (6, 2, 10.00, 22.39, str_to_date('01-01-1990', '%d-%m-%Y'), str_to_date('01-01-1989', '%d-%m-%Y'));
END IF;
COMMIT;
关于MySQL 事务 FOR COMMITING ON TRUE IF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43535586/