我正在尝试发送有关inv_qoh更新的电子邮件,当库存qoh低于3时,电子邮件发送带有item_id(位于同一个表中)和item_desc(来自另一个表,从item_id链接) 。这是我最近的触发器尝试,错误是不正确的触发器语法。任何帮助表示赞赏。
CREATE OR REPLACE TRIGGER Item_Out_of_Stock
AFTER UPDATE OF INV_QOH ON INVENTORY
FOR EACH ROW
SELECT I.ITEM_ID, O.ITEM_DESC
FROM INVENTORY I, ITEM O
WHERE I.INV_QOH < 3 AND I.ITEM_ID = O.ITEM_ID;
BEGIN
SEND_EMAIL(I.ITEM_ID, O.ITEM_DESC);
END;
/
答案 0 :(得分:0)
这应该有效。我将select移动到一个隐式for循环中,所以我不必定义变量或选择INTO。但它是“每行”的触发器,因此只会产生一个行数。
create or replace trigger item_out_of_stock
after update of inv_qoh
on inventory
for each row
begin
for x in (select i.item_id, o.item_desc
from inventory i, item o
where i.inv_qoh < 3 and i.item_id = o.item_id) loop
send_email (x.item_id, x.item_desc);
end loop;
end;
/
这项工作非常有效,因为如果该项目不是&lt; 3,将发生0行计数,并且不会运行匿名块。