2013-05-01 75 views
0

-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

+0

你怎么知道什么时候“的所有订单列已完成” – Aushin 2013-05-01 19:02:20

+0

当所有列不为空,因为他们有数据添加 – 2013-05-01 19:06:08

+0

能否订单项目表在那之后更新?如果订单首行有多个订单行,该怎么办? – 2013-05-01 19:47:15

回答

0

:NEW [字段]使用触发器的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; 
相关问题