繁体   English   中英

如果在SQL触发器

[英]if else in trigger in sql

我正在尝试使用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);

您的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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM