sql >> Database >  >> RDS >> PostgreSQL

Gegevens invoegen in tabellen die zijn gekoppeld door een externe sleutel

U kunt het doen in één sql-statement voor bestaande klanten, 3 statements voor nieuwe. Het enige wat u hoeft te doen is een optimist te zijn en te doen alsof de klant al bestaat:

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

Als de klant niet bestaat, krijgt u een sql-uitzondering met een tekst als:

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

(op voorwaarde dat je customer_id non-nullable hebt gemaakt, wat ik zeker weet). Wanneer die uitzondering zich voordoet, plaatst u de klant in de klantentabel en voert u de invoeging opnieuw uit in de besteltabel:

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

Tenzij uw bedrijf zo snel groeit dat "waar u al het geld in moet steken" uw enige echte probleem wordt, zullen de meeste van uw bijlagen voor bestaande klanten zijn. Dus meestal zal de uitzondering niet optreden en bent u klaar in één verklaring.



  1. Het datamodel voor belangrijke data

  2. java.sql.SQLException:geen geschikte driver gevonden voor jdbc:mysql://localhost:3306/dbname

  3. MySQL DROP FOREIGN KEY Beperking

  4. Waarom is het het beste om een ​​telefoonnummer op te slaan als een string versus een geheel getal?