我有一个启用ORDS的模式,它接受批量JSON记录,然后一个一个地分割它们,然后一个一个地插入到UEM表中。
我尝试创建一个触发器,该触发器获取最后插入的行的id,并使用该值插入另一个表。问题是,下面的触发器只获取和插入最后插入的行的id,并且它只执行1插入。
将成为更具体的
你觉得它为什么会这样?最后,程序“插入”了4条记录。
CREATE OR REPLACE TRIGGER TEST_TRIGGER5
FOR INSERT ON UEM
COMPOUND TRIGGER
lastid NUMBER;
AFTER STATEMENT IS
BEGIN
SELECT MAX(ID) INTO lastid FROM UEM;
INSERT INTO SPRINT1 (tenantid, usersessionid, newuser, totalerrorcount, userid) VALUES ('deneme', 'testsessionid', 'yes', lastid, 'asdasfqwqwe');
END AFTER STATEMENT;
END TEST_TRIGGER5;发布于 2021-11-25 09:31:17
使用“”将这些内容插入到UEM表的CLOB列中,作为4个单独的行。
您有一个INSERT语句,它插入4行。
你觉得它为什么会这样?最后,程序“插入”了4条记录。
它可能插入了4个行,,但是只有一个语句,您使用的是AFTER STATEMENT触发器。如果希望为每一行运行它,则需要使用行级触发器。
CREATE OR REPLACE TRIGGER TEST_TRIGGER5
AFTER INSERT ON UEM
FOR EACH ROW
BEGIN
INSERT INTO SPRINT1 (tenantid, usersessionid, newuser, totalerrorcount, userid)
VALUES ('deneme', 'testsessionid', 'yes', :NEW.id, 'asdasfqwqwe');
END TEST_TRIGGER5;
/db<>fiddle https://dbfiddle.uk/?rdbms=oracle_18&fiddle=c565c1da76cad5b871ee5c3a2680a153
发布于 2021-11-25 09:27:47
为什么?因为它是语句级别的触发器。如果您希望为每一行触发它,您将--显然--使用行级别的触发器,该触发器具有
for each row条款。
https://stackoverflow.com/questions/70108540
复制相似问题