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

子テーブルの外部キーを親のプライマリ自動インクリメントキーと同じ値にする方法

    DEFAULT SERIALで機能します 列のデフォルト値を設定するため。だから

    INSERT INTO Purchase VALUES (DEFAULT,'Lendl');
    

    動作するはずです。ただし、PurchasedItem.purchaseID デフォルト値が設定されていないため、NULLを挿入しようとします (そしてnullはまだ参照されている列にありません)、それで失敗します。

    試してみてください:

    INSERT INTO Purchase(custName) VALUES ('Lendl') RETURNING purchaseID;
    

    挿入されたpurchaseIDの値が表示されます 、次のクエリで使用します:

    INSERT INTO PurchasedItem(purchaseID, itemNo) VALUES (_the_value_above_, 111);
    commit;
    

    インタラクティブ性なしで使用したい場合は、DOを使用してください returning purchaseID into _valueでブロックする

    更新

    またはcte、smth like

    WITH i AS (
      INSERT INTO Purchase(custName, orderedDate) 
      VALUES ('Lendl', '2016-09-28') 
      RETURNING purchaseID
    )
    insert into PurchasedItem
    select i.purchaseID,'smth',3
    from i
    


    1. 1000のバッチで通知を送信する必要があります

    2. DBMS_STANDARDパッケージのプロシージャや関数をPL/SQLコードで使用する必要がありますか?

    3. PostGIS-マルチポリゴンをシングルポリゴンに変換します

    4. Mysql + php、見出しを押したときにレコードのすべてのデータを表示するリンクを作成する方法