0

我需要创建一个触发器,当手头的产品数量低于 5 时设置一个标志。

我在 Oracle 11g 中创建了一个表“STP_STOCK”,它具有以下列:

STP_QUANTITY, NUMBER(4,0), RANGE 0-9999

如何创建在 SQL 中设置标志的触发器?

我已经做到了以下......但不知道重新设置标志。

CREATE OR REPLACE TRIGGER STP_STOCK
AFTER UPDATE
   ON orders
   FOR STP_QUANTITY

BEGIN

END;
4

1 回答 1

0

假设标志在同一个表中,我建议您使用更新触发器。然后您可以执行以下操作:

CREATE OR REPLACE TRIGGER STP_STOCK
before UPDATE
   ON orders
   FOR each row    
BEGIN
    if :new.stp_quantity < 5
    then :new.flag := 'Y';
    end if;
END;

(我手头没有 Oracle 来测试语法,所以语法可能有错误。)

你想做一个before触发器,所以你可以在:new. after在触发器中更新同一个表是不好的做法。

据推测,您还想检查数量是否大于 5 并将标志设置为'N',但问题中未指定。

最后,您可能真的想用一个view或虚拟列来代替触发器和标志。就像是:

select o.*, (case when stp_quantity < 5 then 'Y' else 'N' end) as Flag
from orders o

(注意:我使用*它是为了方便。实际上,您可能希望列出视图中的每一列。)

于 2013-04-27T15:36:50.503 回答