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

別のテーブルの列を更新するトリガーを作成するにはどうすればよいですか?

    mydatabase スキーマの非常に残念な名前です 。

    トリガー関数は次のようになります。

    CREATE OR REPLACE FUNCTION trg_upaft_upd_trip()
      RETURNS TRIGGER AS
    $func$
    BEGIN
    
    UPDATE mydatabase.trip t    -- "mydatabase" = schema name (?!)
    SET    last_updated = now()
    WHERE  t.id = NEW.trip_id   -- guessing column names      
    
    RETURN NULL;                -- calling this AFTER UPDATE
    
    END
    $func$  LANGUAGE plpgsql;
    

    また、関連するすべてのテーブルのトリガーで使用する必要があります(tripではありません)。 それ自体):

    CREATE TRIGGER upaft_upd_trip
    AFTER UPDATE ON mydatabase.trip_detail
    FOR EACH ROW EXECUTE PROCEDURE trg_upaft_upd_trip();
    

    INSERTもカバーする必要があります およびDELETE (そしておそらくCOPY )すべてのサブテーブルで...

    このアプローチには、多くの潜在的な障害点があります。別の方法として、最新のlast_updatedを計算するクエリまたはビューを検討してください。 サブテーブルから動的に。頻繁に更新する場合は、これが優れたアプローチになる可能性があります。
    めったにUPDATEしない場合 およびSELECT 多くの場合、最初のアプローチで十分です。




    1. あるテーブルから別のテーブルに挿入するPostgreSQLの関数?

    2. SQL、Postgres OID、それらは何であり、なぜそれらは有用ですか?

    3. HTMLページをmysqlデータベースに接続する方法は?

    4. ワークフローパターンを使用して任意のエンティティの状態を管理する