我正在尝试更新表2中的字段,具体取决于我的表1中字段中更新的值,使用oracle中的触发器
create or replace trigger update_value
AFTER update of field_1 on table_1
for each row
begin
if(:New.field_1 = 'y') then
update table_2
set field_2 = 'updated'
from table_1
where table_1.id = table_2.id
end if;
end;
答案 0 :(得分:0)
如果触发器或任何其他存储的PL / SQL代码编译有错误或警告,您可以通过执行show errors
来查看实际问题(如果您的客户端支持它; SQL * Plus和SQL Developer会这样做) ;或者您可以在user_errors
或all_errors
视图中查询相应的对象类型和名称,例如:
select * from user_errors where type = 'TRIGGER' and name = 'UPDATE_VALUE';
您拥有的代码将获得PLS-00103: Encountered the symbol ";" ...
。更新语句后没有分号。如果你添加,你会得到PL/SQL: ORA-00933: SQL command not properly ended
,因为你在更新语句中没有from
子句(除非你有子查询)。
您无需直接引用table_1
;你已经使用了一个:NEW
变量,你只需要使用另一个变量:
create or replace trigger update_value
after update of field_1 on table_1
for each row
begin
if :NEW.field_1 = 'y' then
update table_2
set field_2 = 'updated'
where id = :NEW.id;
end if;
end;
/