簡體   English   中英

每次更新后,將所有字段更新到日記表

[英]Update all fields to journal table after each update

我有這個觸發器來在每次更新后更新日記表中的單個字段,但是我需要一次更新日記中相關行中的所有列,而不是通過命名它們中的每一個並以逗號分隔,我該怎么做?

    DELIMITER //
    CREATE TRIGGER sfo_clone_update_subtotal_invoiced AFTER UPDATE ON sales_flat_order
    FOR EACH ROW BEGIN
        update sales_flat_order_journal set subtotal_invoiced=NEW.subtotal_invoiced where entity_id=new.entity_id;
    END;
DELIMITER ;

UPDATE語法允許您設置多個列,並以逗號分隔。

update sales_flat_order_journal 
set subtotal_invoiced = NEW.subtotal_invoiced,
    other_column1 = NEW.other_column,
    other_column2 = (/* constant expression, not based on NEW */),
    other_column3 = (SELECT ...scalar expression from some other tables... LIMIT 1),
    updated_at = NOW() 
where entity_id = new.entity_id;

您可以訪問NEW.other_column以獲取生成觸發器的同一行的值。

您可以在觸發器主體中聲明局部變量 ,以幫助計算復雜值。

您可以在觸發器主體中使用SELECT語句從其他行或其他表中查詢值,只要您使用返回一行和一列的標量SELECT

如果您需要觸發器中很難完成的更復雜的更新,則可以在應用程序代碼中完成,而不是觸發器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM