带有 INSERT INTO table 的 Oracle 触发器
Oracle Trigger with INSERT INTO table
我正在尝试使用 After Update 语句创建 Oracle 触发器。我似乎无法创建触发器,因为我收到 Table 不存在错误提示:
CREATE OR REPLACE TRIGGER USR1.CORE_FINISHED
AFTER UPDATE OF RUNTIME_STATUS
ON USR2.runtime_btc
FOR EACH ROW
WHEN ( new.RUNTIME_STATUS = 'FINISHED'
AND new.id = 'cr_daily')
BEGIN
INSERT INTO USR1.test_dq_log (BTC_NO, TBL_NAM, SCR_NAM)
SELECT BTC_NO, TBL_NAM, SCR_NAM
FROM USR2.EVENT_LG -- This is where the script is throwing errors
WHERE BTC_NO = :NEW.BTC_NO;
END;
奇怪的是,当 运行 在触发器之外时,相同的表达式是:
INSERT INTO USR1.test_dq_log (BTC_NO, TBL_NAM, SCR_NAM)
SELECT BTC_NO, TBL_NAM, SCR_NAM
FROM USR2.EVENT_LG
WHERE BTC_NO = 'any number here'
似乎工作顺利,它在 table!
中插入行
您似乎被授予了通过 角色 插入 table 的权限。你是吗?
如果是这样,它可以在 SQL 级别或匿名 PL/SQL 块中工作,但不会在 named PL/SQL 过程中工作(例如存储过程、函数、触发器) - 您必须直接(而不是通过角色)获得该授权。
我正在尝试使用 After Update 语句创建 Oracle 触发器。我似乎无法创建触发器,因为我收到 Table 不存在错误提示:
CREATE OR REPLACE TRIGGER USR1.CORE_FINISHED
AFTER UPDATE OF RUNTIME_STATUS
ON USR2.runtime_btc
FOR EACH ROW
WHEN ( new.RUNTIME_STATUS = 'FINISHED'
AND new.id = 'cr_daily')
BEGIN
INSERT INTO USR1.test_dq_log (BTC_NO, TBL_NAM, SCR_NAM)
SELECT BTC_NO, TBL_NAM, SCR_NAM
FROM USR2.EVENT_LG -- This is where the script is throwing errors
WHERE BTC_NO = :NEW.BTC_NO;
END;
奇怪的是,当 运行 在触发器之外时,相同的表达式是:
INSERT INTO USR1.test_dq_log (BTC_NO, TBL_NAM, SCR_NAM)
SELECT BTC_NO, TBL_NAM, SCR_NAM
FROM USR2.EVENT_LG
WHERE BTC_NO = 'any number here'
似乎工作顺利,它在 table!
中插入行您似乎被授予了通过 角色 插入 table 的权限。你是吗?
如果是这样,它可以在 SQL 级别或匿名 PL/SQL 块中工作,但不会在 named PL/SQL 过程中工作(例如存储过程、函数、触发器) - 您必须直接(而不是通过角色)获得该授权。