簡體   English   中英

錯誤1241(21000):觸發器中的操作數應包含1列

[英]ERROR 1241 (21000): Operand should contain 1 column(s) in a trigger

MariaDB [final]> delimiter //
MariaDB [final]> create or replace trigger llena_factura
-> after insert on D_FACTURA
-> FOR EACH ROW
-> BEGIN
-> set @precio=(SELECT * from ARTICULOS where Clave_A=NEW.Clave_A);
-> set @sub=NEW.Cantidad*@precio.Precio_V;
-> set @tot=@sub+NEW.Importe;
-> insert into FACTURA values(NULL,CURDATE(), @sub, @tot,1);
-> END;
-> //

查詢正常,受影響的0行(0.12秒)

MariaDB [final]> delimiter ;
MariaDB [final]> insert into D_FACTURA values(5.00,10.00,1);
ERROR 1241 (21000): Operand should contain 1 column(s)

為什么? 您能告訴我觸發器的錯誤是什么?

MySQL變量是標量 ,這意味着它們只能包含一個值,不能包含一行。

您不能將變量設置為SELECT * ...的結果

您也無法訪問@precio.Precio_V之類的變量的字段。 沒有字段。 該變量只有一個值。

看來您只不過使用了該子查詢中的一個字段,因此可以將變量設置為一列,以這種方式一行:

SELECT Precio_V INTO @precio FROM ARTICULOS WHERE Clave_A = NEW.Clave_A LIMIT 1;
SET @sub = NEW.Cantidad * @precio;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM