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.