oracle怎么建立一个触发器在表插入数据的时候更新表的另一个字段

触发器是通过了,但是不更新表字段
2024-11-06 07:30:57
推荐回答(1个)
回答(1):

BEGIN
UPDATE T_SALARY_SALARIESDATA SET T_SALARY_SALARIESDATA.text1 =1 WHERE Bdgagency:= OLD.Bdgagency;
END;
上面这段代码的逻辑是错误的,错误内容有两点:
1. 不管bdgagency列是否有变化,都会将T_SALARY_SALARIESDATA.text1设为1
2. 使用bdgagency列做为where条件,需要保证Bdgagency是表T_SALARY_SALARIESDATA的主键或者唯一索引。否则请使用主键做为where条件,以免更新了其它不应当更新的数据。

SQL code?

-- 假设两表中都存在列R_ID,且该列为主键

if ( OLD.Bdgagency <> NEW.Bdgagency) then
UPDATE T_SALARY_SALARIESDATA SET T_SALARY_SALARIESDATA.text1 =1 WHERE R_ID = OLD.R_ID;
end if;