在触发器内循环mysql查询
这是我的扳机:在触发器内循环mysql查询,mysql,sql,triggers,Mysql,Sql,Triggers,这是我的扳机: DELIMITER | CREATE TRIGGER update_status_penjualan AFTER UPDATE ON penjualan FOR EACH ROW BEGIN DECLARE arrayresult = (SELECT * FROM rincian_penjualan WHERE id_penjualan = OLD.id) for ids in arrayresults UPDATE buku SET s
DELIMITER |
CREATE TRIGGER update_status_penjualan AFTER UPDATE
ON penjualan FOR EACH ROW
BEGIN
DECLARE arrayresult = (SELECT * FROM rincian_penjualan WHERE id_penjualan = OLD.id)
for ids in arrayresults
UPDATE buku SET stok = stok + ids['jumlah']; WHERE noisbn = ids['noisbn'];
endfor
END;
|
DELIMITER ;
我有很多错误,我想是因为我的循环代码不对。
有人能告诉我怎么修吗?
谢谢~您可以尝试使用
光标
,如下所示:
DELIMITER |
CREATE TRIGGER update_status_penjualan AFTER UPDATE
ON penjualan FOR EACH ROW
BEGIN
declare jumlah_c int;
declare noisbn_c int;
declare done int;
declare cur1 cursor for
SELECT * FROM rincian_penjualan WHERE id_penjualan = OLD.id;
declare continue handler for not found set done=1;
set done = 0;
open cur1;
igmLoop: loop
fetch cur1 into jumlah_c,noisbn_c;
if done = 1 then leave igmLoop; end if;
UPDATE buku SET stok = stok + jumlah_c WHERE noisbn = noisbn_c;
end loop igmLoop;
close cur1;
END;
|
DELIMITER ;
您可以尝试使用
光标
,如下所示:
DELIMITER |
CREATE TRIGGER update_status_penjualan AFTER UPDATE
ON penjualan FOR EACH ROW
BEGIN
declare jumlah_c int;
declare noisbn_c int;
declare done int;
declare cur1 cursor for
SELECT * FROM rincian_penjualan WHERE id_penjualan = OLD.id;
declare continue handler for not found set done=1;
set done = 0;
open cur1;
igmLoop: loop
fetch cur1 into jumlah_c,noisbn_c;
if done = 1 then leave igmLoop; end if;
UPDATE buku SET stok = stok + jumlah_c WHERE noisbn = noisbn_c;
end loop igmLoop;
close cur1;
END;
|
DELIMITER ;
错误是什么?如果我们不知道问题出在哪里,我们就帮不了忙。请编辑您的问题以添加详细信息。有哪些错误?如果我们不知道问题出在哪里,我们就帮不了忙。请编辑您的问题以添加详细信息;声明noisbn_c int;这是否自动引用了buku表中的ColumJumlah和noisbn?是的,它们对应于select的每一行(
fetch cur1 into jumlah_c,noisbn_c
),我将它们声明为int,对吗?声明jumlah_c int;声明noisbn_c int;这是否自动引用了buku表中的ColumJumlah和noisbn?是的,它们对应于select的每一行(fetch cur1 into jumlah_c,noisbn_c
),我声明它们为int,对吗?