触发错误ORA-04092 ORA-04088

Vij*_*jay 1 sql oracle triggers ora-04088

我创建了一个触发器如下:

CREATE OR REPLACE TRIGGER trigger_test
AFTER INSERT ON trigger_1
FOR EACH ROW
DECLARE
t_identifier VARCHAR2(10);
t_name VARCHAR2(20);
BEGIN
t_identifier := (:NEW.IDENTIFIER);
t_name := (:NEW.NAME);
INSERT INTO trigger_2(IDENTIFIER,NAME)VALUES(t_identifier,t_name);
COMMIT;
END;
Run Code Online (Sandbox Code Playgroud)

我想在trigger_1中插入一行

INSERT INTO trigger_1(IDENTIFIER,NAME)
VALUES('1234567','Vijay');
Run Code Online (Sandbox Code Playgroud)

它给了我错误:

ORA-04092: cannot COMMIT in a trigger
ORA-06512: at "LVSDBO46.TRIGGER_TEST", line 8
ORA-04088: error during execution of trigger 'LVSDBO46.TRIGGER_TEST'
Run Code Online (Sandbox Code Playgroud)

你能帮帮忙吗?

Nil*_*der 6

只需删除

COMMIT;
Run Code Online (Sandbox Code Playgroud)

来自触发码.触发器在正在进行的事务中执行,因此您无法单独提交.提交事务时,您的trigger_2中的插入也将被提交.