【发布时间】:2022-11-03 19:13:32
【问题描述】:
有第一个表 M_TAX_ORG,当更新 NAME_R 列时,第二个表 M_TAX_ORG_ADM_INFO 也应该自动更改 NAME_R 列。 (从截图可以看出, M_TAX_ORG_ADM_INFO 与 M_TAX_ORG 相关联)有现成的脚本吗?也许带触发器?
CREATE OR REPLACE TRIGGER M_TAX_ORG_AFTER_UPDATE_1
AFTER UPDATE
ON M_TAX_ORG
FOR EACH ROW
DECLARE
v_NAME_R VARCHAR2(600 char);
BEGIN
SELECT NAME_R
INTO v_NAME_R
FROM M_TAX_ORG WHERE TEST_USER.M_TAX_ORG.M_TAX_ORG_ID = TEST_USER.M_TAX_ORG_ADM_INFO.M_TAX_ORG_ID;
UPDATE M_TAX_ORG_ADM_INFO ADM
SET (ADM.NAME_R) = v_NAME_R
WHERE EXISTS(SELECT M_TAX_ORG.NAME_R
FROM M_TAX_ORG
WHERE M_TAX_ORG.M_TAX_ORG_ID = ADM.M_TAX_ORG_ID);
END;
我试过这个脚本。但这是不正确的。
【问题讨论】:
-
“不正确”不是很有帮助——确实会出现编译错误、运行时错误或错误结果?首先,您应该使用
:new而不是再次查询触发器所在的表。但是你为什么要在两个表中复制相同的数据呢?
标签: sql oracle plsql oracle-sqldeveloper plsqldeveloper