如何解决我在使用合并编译触发器时遇到问题
您能解释一下我的代码在哪里出错吗?
CREATE OR REPLACE TRIGGER mda_01.tr_01_t01003 AFTER
INSERT ON mda_01.t01004_bo_semafor_log
FOR EACH ROW
DECLARE
PRAGMA autonomous_transaction;
BEGIN
IF inserting THEN
MERGE INTO mda_01.t01003_bo_semafor a
USING (
SELECT
:new.semafor_name,:new.semafor_ts,:new.semafor_status,:new.semafor_desc
FROM
dual
) b
ON ( b.semafor_name = a.semafor_name )
WHEN MATCHED THEN UPDATE
SET a.semafor_ts = b.semafor_ts,a.semafor_status = b.semafor_status
WHEN NOT MATCHED THEN
INSERT (
semafor_name,semafor_ts,semafor_status,semafor_desc )
VALUES
( b.semafor_name,b.semafor_ts,b.semafor_status,b.semafor_desc );
END IF;
COMMIT;
END;
/
我得到一个错误:
LINE / COL ERROR
5/6 PL / SQL:忽略了SQL语句
16/8 PL / SQL:ORA-00904:“ B”。“ SEMAFOR_NAME”:无效的标识符
错误:检查编译器日志
谢谢保罗
解决方法
我解决了这个问题。 我添加了别名,并且触发器已编译且没有错误:
SELECT
:new.semafor_name as semafor_name,:new.semafor_ts as semafor_ts,:new.semafor_status as semafor_status,:new.semafor_desc as semafor_desc
FROM
dual
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。