我尝试使用if else语句在插入触发器之后创建。我可以在没有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);
答案 0 :(得分:4)
您的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;
但是不需要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);