sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur man får den underordnade tabellens främmande nyckel att ha samma värde som förälderns primära auto-inkrementeringsnyckel

DEFAULT fungerar för SERIAL eftersom det anger standardvärdet för kolumn. Så

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

borde fungera. Men PurchasedItem.purchaseID har inget standardvärde inställt, så den försöker infoga NULL (och null finns inte i den refererade kolumnen ännu), så det misslyckas.

försök:

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

du kommer att se värdet på infogat purchaseID , använd den i nästa fråga:

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

Om du vill att den ska användas utan interaktivitet, använd DO blockera med att returning purchaseID into _value

uppdatering :

eller cte, som

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. Använd FullCalendar utan datum

  2. MySQL:summan av varje dag

  3. Skapa/skrivbehörigheter i MySQL

  4. Använda URL-parametrar i MYSQL-sökning