sql >> Database teknologi >  >> RDS >> PostgreSQL

Indsæt data i tabeller forbundet med fremmednøgle

Du kan gøre det i én sql-erklæring for eksisterende kunder, 3 erklæringer for nye. Alt du skal gøre er at være optimist og handle, som om kunden allerede eksisterer:

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

Hvis kunden ikke eksisterer, får du en sql-undtagelse, hvilken tekst vil være noget i stil med:

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

(forudsat at du gjorde customer_id ikke-nullbar, hvilket jeg er sikker på, du gjorde). Når denne undtagelse opstår, skal du indsætte kunden i kundetabellen og gentage indsættelsen i ordretabellen:

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

Medmindre din virksomhed vokser med en hastighed, der vil gøre "hvor skal du lægge alle pengene" til dit eneste reelle problem, vil de fleste af dine indlæg være til eksisterende kunder. Så det meste af tiden vil undtagelsen ikke forekomme, og du vil være færdig i én erklæring.



  1. MySQL Fire Trigger til både Insert og Update

  2. Hvad er Microsoft Access, og hvad bruger du det til?

  3. DBTIMEZONE-funktion i Oracle

  4. Sådan tjekker du din sessions ANSI_NULLS-indstilling i SQL Server