如何在另一个表完成时创建一个更新列的触发器?

时间:2013-05-01 18:47:53

标签: sql oracle triggers

-topic -

我有一个名为ORDERLINE的表,它有多列。

另一个名为ORDERHEADER的表有一个名为Order_completed的列,当所有订单列都已完成时,该列将设置为系统日期。

如何使用触发器执行此操作?

我尝试的方式是

    CREATE TRIGGER orderhascompleted
    AFTER (all values in ORDERLINE has been completed)
    BEGIN
    INSERT INTO ORDERHEADER (Order_completed) VALUES (NOW())

我该怎么做?在C ++中,我会使用一个简单的if语句,但我不认为这在SQL中是可行的

1 个答案:

答案 0 :(得分:0)

也许使用:NEW。[FIELD]在触发器中使用IF语句声明如下:

    CREATE OR REPLACE TRIGGER [NAME] AFTER UPDATE
    ON [TABLE]
    FOR EACH ROW
    REFERENCING OLD AS OLD NEW AS NEW

会做这个工作。

If语句可能如下所示

If (:OLD.FIELD IS NOT NULL OR :NEW.FIELD IS NOT NULL) AND ... THEN
  UPDATE [TABLE]...
END IF;