sql >> データベース >  >> RDS >> Oracle

別のテーブルの列が更新されたときに、あるテーブルの列を更新するトリガーを作成します

    日付と行IDを取得するにはどうすればよいですか?

    これらがDELIVERY_DATEおよびIDというORDERテーブルの列であるとすると、トリガーは次のようになります。

    CREATE OR REPLACE TRIGGER your_trigger_name
        BEFORE UPDATE ON Order
        FOR EACH ROW 
    BEGIN
       if :new.delivery_date != :old.delivery_date
       then
           UPDATE Delivery d
           set d.delivery_date = :new.delivery_date
           where d.order_id = :new.id;
        end if;
    END;
    

    FOREACHROW句に注意してください。これは個々の行の値を参照するために必要です。 IF構造を使用して、配信時にUPDATEを実行するかどうかをテストしました。トリガーに他のロジックがない場合は、次のように記述できます...

    CREATE OR REPLACE TRIGGER your_trigger_name
        BEFORE UPDATE OF delivery_date ON Order
        FOR EACH ROW 
    BEGIN
       UPDATE Delivery d
       set d.delivery_date = :new.delivery_date
       where d.order_id = :new.id;
    END;
    

    私はあなたが尋ねた質問に答えましたが、余談ですが、あなたのデータモデルは最適ではないことを指摘します。適切に正規化された設計では、1つのテーブルにのみDELIVERY_DATEが保持されます。DELIVERYはその論理的な場所のようです。



    1. iPerfを使用したネットワーク負荷テスト

    2. (mysql、php)データを挿入する前にauto_incrementフィールド値を取得する方法は?

    3. Now()がPostgreSQLでどのように機能するか

    4. LIKEと〜の代わりに、代替との正規表現の一致を行うときにSIMILARTOのみが機能するのはなぜですか