当前位置: 首页 > 知识库问答 >
问题:

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

澹台奇略
2023-03-14

我正在尝试制作一个触发器,该触发器检测您何时在表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个答案

公冶同
2023-03-14

感谢Ashok Anumula的回答。

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

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

相同但没有括号。

 类似资料:
  • 问题内容: 在正在创建的系统上工作时,我尝试在项目中使用以下查询: 当我使用PDO时,“:cat”受我的PHP代码约束。2是“:cat”的有效值。 该查询虽然给我一个错误:“#1241-操作数应包含1列” 让我感到困扰的是,我认为该查询不会有问题。选择列,然后从另一个表中选择另外两个,然后从那里继续。我只是不知道是什么问题。 有没有简单的解决方法,或者是写查询的另一种方法? 问题答案: 您的子查询

  • 问题内容: 我收到错误“操作数应包含1列”-但是我需要COUNT(e.id) 问题答案: 总有这样的:

  • 问题内容: 我有一个顾客。 当将新行添加到此客户表时,如果新行的(主键)已经在客户表中,则我想使用其他字段对现有(旧)行进行更新。()。 否则(如果不在表中)插入新行。我知道我可以使用触发器在mssql中做到这一点。有没有一种方法可以在mysql中做到这一点。 问题答案: MySQL没有触发器,但是它具有REPLACE和INSERT … ON DUPLICATE KEY UPDATE (请参阅文档

  • 我试图在插入后创建一个触发器,它将更新另一个表。 这是我尝试的代码: 但我会收到以下错误消息: 1064-您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册,了解使用“@qte AS integer”附近的正确语法;声明@code为整数;从INSERTED中选择@QTE=qteInv;%s“位于第4行

  • 问题内容: 我正在尝试将表1中的数据插入表2中 table2的键是student_id。 假定没有任何重复项。 我得到错误: table2中只有四列。 问题答案: 语法错误,请从中删除。

  • 问题内容: 如果我 在表上有,如何抛出错误以阻止对该表进行更新? 问题答案: 这是一种可行的技巧。这不是干净的,但看起来可能可行: 本质上,您只是尝试更新不存在的列。