创建一个触发器,当属性变为负数时,删除行[oracle sql]?

wfb*_*ale 1 sql oracle triggers

我想创建一个触发器,当其中一个属性变为负数时将删除该行.到目前为止,我有这个,但它似乎不是有效的SQL:

CREATE OR REPLACE TRIGGER ZERO_COPIES_TRIGGER
after
update of counter_attribute
on my_table
referencing new as new
for each row when(new.copies < 0)
begin
  delete from my_table where my_table.id = :new.id;
end;
Run Code Online (Sandbox Code Playgroud)

Ada*_*kes 5

这不会起作用.您无法在由行级触发器操作的表上执行DML.您将收到"变异表"错误.

要获得您想要的结果,最好的办法是使用标记或指示符列来标识要删除的记录.然后,有一个单独的作业或进程或任何实际执行删除.