0

-话题-

我有一个名为 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 中是不可能的

4

1 回答 1

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;
于 2013-05-01T19:08:37.690 回答