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

外部キー制限がある2つのテーブルの行を更新する方法

    Postgresでは、書き込み可能なCTEを使用して、1つのステートメントで両方のテーブルを更新できます。

    このテーブル設定を想定すると:

    create table a (rid integer primary key, ride text, qunta integer);
    create table b (kid integer primary key, rid integer references a, date date);
    

    CTEは次のようになります:

    with new_a as (
      update a 
        set rid = 110
      where rid = 1
    )
    update b 
      set rid = 110 
    where rid = 1;
    

    (延期不可能な)外部キーはステートメントレベルで評価され、主キーと外部キーの両方が同じステートメントで変更されるため 、これは機能します。

    SQLFiddle: http://sqlfiddle.com/#!15/db6d1/1



    1. ソースが見つかりませんJARファイルmysql-connector-java-5.1.20-bin.jarにソースアタッチメントがありません

    2. クエリコスト:グローバル一時テーブルとコレクション(仮想配列)

    3. SQL ビューでの累計

    4. Oracle Install for SSIS接続(およびドライバ32 64ビット)