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

他のテーブルの挿入からのPostgres挿入値

    この種の挿入チェーンには、共通のテーブル式が必要です。

    with ta as (
      INSERT INTO tbl_b (status) VALUES ('OK') 
      RETURNING id
    )
    INSERT INTO tbl_a (name, tbl_b_reference) 
    VALUES ('myName', (select id from ta));
    

    もう1つのオプションは、単にlastval()を使用することです。 最後に生成されたシーケンス値を参照する関数:

    INSERT INTO tbl_b (status) VALUES ('OK');
    INSERT INTO tbl_a (name, tbl_b_reference) 
      VALUES ('myName', lastval());
    

    これら2つの間のシーケンス値を生成する他のステートメントがあってはならないことに注意してください。

    または、currval()関数を使用します:

    INSERT INTO tbl_b (status) VALUES ('OK');
    INSERT INTO tbl_a (name, tbl_b_reference) 
      VALUES ('myName', currval('tbl_b_id_seq'));
    

    'tbl_b_id_seq' は、Postgresがserial用に作成されたシーケンスに使用する標準名です。 列:



    1. mysqlにwhere条件を無視させる

    2. Oracleデータベースのリカバリ

    3. JDBC文字エンコード

    4. max_connectionsのようなパラメーター(postgresql.conf設定)を照会します