我正在尝试制作一个触发器,该触发器检测您何时在表RECHOND的FLIGHTTICKEID列中插入一个重复的值,然后在另一个表中插入一些数据。
delimiter //
DROP TRIGGER IF EXISTS refunded_tickets//
CREATE TRIGGER refunded_tickets
BEFORE INSERT ON refund
for each row
BEGIN
IF new.flightTicketID IN (SELECT flightTicketID FROM refund WHERE accepted = 1) THEN
INSERT INTO RefundsAlterations(passengerID, flightTicketID, comment)
SELECT (passengerID, new.flightTicketID, "Refund of a ticket already processed correcty")
FROM refund INNER JOIN claims ON claimID.refundID = refund.refundID
WHERE new.refundID = claimID.refundID;
END IF;
END //
delimiter ;
这看起来是可以的,但是当我尝试将值插入到表中以查看触发器是否工作时,使用下面的insert into时,我得到了他的错误:错误代码:1241。操作数应包含1列。
INSERT INTO refund (refundID, flightTicketID, argument, accepted, amount)
VALUES (10000, 32862, 'Flight Delayed', 1, 264);
如果我移除触发器,Insert工作正常,所以我想我在触发器上做错了什么。有人知道会是什么吗?谢谢大家。
感谢Ashok Anumula的回答。
问题是触发器的插入中的SELECT语法结,正确的语法结是:
SELECT passengerID, new.flightTicketID, "Refund of a ticket already processed correcty" FROM refund
相同但没有括号。