2016-02-03 51 views
0

我嘗試創建後插入觸發器與if else聲明。我可以做到這一點,如果沒有其他,但得到它的錯誤。 因此,在'預訂'表中有一列customer_id。有一個表客戶,我有一個'類型'列。根據此列中的值,我想向booking_status表中添加一行,但我在語法上遇到錯誤。我只是在學習SQL,請幫忙,如果可以的話。如果其他在觸發器中的sql

AFTER INSERT ON booking 
FOR EACH ROW 
IF (SELECT type FROM customer WHERE ID=customer_id) = 'not trust' 
BEGIN 
INSERT INTO booking_status (id, status_name, booking_id) VALUES(NEW.booking_number, 'Checking', NEW.booking_number) 
END 
ELSE 
INSERT INTO booking_status (id, status_name, booking_id) VALUES(NEW.booking_number, 'Approved', NEW.booking_number); 
+0

你錯過了'THEN'和'END IF'。 – Barmar

+0

你已經用mysql和sql server標記了這個標籤。每個DBMS的語法都非常不同。哪一個? –

+0

有關MySQL'IF'語法的信息,請參閱https://dev.mysql.com/doc/refman/5.6/en/if.html。 – Barmar

回答

4

您的IF語法不正確。在條件爲真時需要執行的語句前需要THEN,在末尾需要END IF;,每個語句末尾需要;。當THEN條款中只有一條語句時,您不需要BEGIN/END

IF (SELECT type FROM customer WHERE ID=customer_id) = 'not trust' 
THEN 
    INSERT INTO booking_status (id, status_name, booking_id) VALUES(NEW.booking_number, 'Checking', NEW.booking_number); 
ELSE 
    INSERT INTO booking_status (id, status_name, booking_id) VALUES(NEW.booking_number, 'Approved', NEW.booking_number); 
ENDIF; 

但並不需要一個IF聲明,你可以在一個單一的INSERT使用IF功能:

INSERT INTO booking_status(id, status_name, booking_id) 
VALUES (NEW.booking_number, 
     IF((SELECT type FROM customer WHERE ID=customer_id) = 'not trust', 'Checking', 'Approved'), 
     NEW.booking_number); 
+0

哦,非常感謝你! –