提问者:小点点

MySQL-Operand在INSERT after触发器中应包含1列


我正在尝试制作一个触发器,该触发器检测您何时在表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工作正常,所以我想我在触发器上做错了什么。有人知道会是什么吗?谢谢大家。


共1个答案

匿名用户

感谢Ashok Anumula的回答。

问题是触发器的插入中的SELECT语法结,正确的语法结是:

SELECT passengerID, new.flightTicketID, "Refund of a ticket already processed correcty" FROM  refund

相同但没有括号。