sql >> Databasteknik >  >> RDS >> PostgreSQL

Infoga data i tabeller länkade med främmande nyckel

Du kan göra det i en SQL-sats för befintliga kunder, 3 satser för nya. Allt du behöver göra är att vara optimist och agera som om kunden redan finns:

insert into "order" (customer_id, price) values \
((select customer_id from customer where name = 'John'), 12.34);

Om kunden inte finns får du ett sql-undantag, vilken text blir ungefär som:

null value in column "customer_id" violates not-null constraint

(förutsatt att du gjorde customer_id icke-nullbart, vilket jag är säker på att du gjorde). När det undantaget inträffar infogar du kunden i kundtabellen och gör om infogningen i ordertabellen:

insert into customer(name) values ('John');
insert into "order" (customer_id, price) values \
((select customer_id from customer where name = 'John'), 12.34);

Såvida inte ditt företag växer i en takt som kommer att göra "var ska du lägga alla pengarna" till ditt enda verkliga problem, kommer de flesta av dina insatser att vara för befintliga kunder. Så, för det mesta, kommer undantaget inte att inträffa och du kommer att göras i ett uttalande.



  1. använd kommandot database_name i PostgreSQL

  2. Oracle 10g accepterar 5-siffrigt år i ett datum

  3. hur ändrar man stapelfärg i MPandroidCharts baserat på något individuellt värde lagrat i sqlite?

  4. Hur ändrar jag fält i den nya PostgreSQL JSON-datatypen?