2017-04-21 20 views
1

我需要做一個SQL事務,只有提交插入如果一個日期是大於其他,並回滾如果別人..MySQL的交易,COMMITING ON真,如果

這是我有:

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; 

這些都是我的反應......

如果未在此位置有效

錯誤代碼:1064您的SQL語法錯誤;檢查與您的MySQL服務器版本相對應的手冊,在第1行使用'IF @zacetek < @konec THEN COMMIT'使用正確的語法。

+1

只需在**插入前檢查日期**,如果它們不符合條件,則根本不插入。 – krokodilko

+0

但我需要將其作爲交易中的一項交易 –

回答

0

像這樣? (來自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;