当我尝试运行下面的代码时;我收到以下错误。
CREATE PROCEDURE proc_test
(IN roger_value INT, dd VARCHAR(100), way_id INT)
LANGUAGE SQL MODIFIES SQL DATA
INSERT INTO testall
VALUES
(000, roger_value, dd, 777, way_id);
CREATE TRIGGER test1
AFTER INSERT ON testall
FOR EACH ROW mode DB2SQL
UPDATE testall
SET way_out = way_out + 1,
way_in = way_in + 1;
CREATE TRIGGER test2
AFTER INSERT ON testall
FOR EACH ROW mode DB2SQL
DELETE FROM testfirst
WHERE (SELECT testfirst.roger_value FROM testfirst) = (SELECT testall.roger_value FROM testall);
CALL proc_test(999, 'testvalue', 8888) ;
Status:
Failed
Error message
An error occurred in a triggered SQL statement in trigger "schema111.test2". Information returned for the error includes SQLCODE "-811", SQLSTATE "21000" and message tokens "".. SQLCODE=-723, SQLSTATE=09000, DRIVER=4.27.25
我不知道发生了什么事后,尝试了许多网站,但仍然没有答案。有人能帮助吗?
2条答案
按热度按时间vsikbqxv1#
如果我猜对了你的意图,请做以下更改:
1.使用关键字
new
来引用要插入的行1.修正语法
应用这些点将进行删除:
vcudknz32#
如果目标是从
testfirst
中删除所有行,这些行的ROGER_VALUE
值与插入到testall
中的行的ROGER_VALUE
值相同,则:如果目标是仅更新插入行中的某些值(而不是所有表行中的值),则: