Slw*_*_45 0 sql triggers if-statement
我正在尝试使用if else语句在插入触发器之后创建。我可以在没有if else的情况下执行此操作,但是会出错。因此,在“预订”表中,有一个列customer_id。有一个表客户,我在其中有一列“类型”。根据此列中的值,我想在booking_status表中添加一行,但是语法错误。我只是学习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);
Run Code Online (Sandbox Code Playgroud)
您的IF
语法不正确。您需要THEN
之前要执行的语句当条件为真时,你需要END IF;
在它结束时,你需要;
在每个语句的结束。BEGIN/END
当THEN
子句中只有一条语句时,您不需要。
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;
Run Code Online (Sandbox Code Playgroud)
但是不需要IF
声明,您可以IF
在一个函数中使用该函数INSERT
:
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);
Run Code Online (Sandbox Code Playgroud)