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