Anda dapat melakukannya dalam satu pernyataan sql untuk pelanggan yang sudah ada, 3 pernyataan untuk yang baru. Yang harus Anda lakukan adalah menjadi optimis dan bertindak seolah-olah pelanggan sudah ada:
insert into "order" (customer_id, price) values \
((select customer_id from customer where name = 'John'), 12.34);
Jika pelanggan tidak ada, Anda akan mendapatkan pengecualian sql yang teksnya akan seperti:
null value in column "customer_id" violates not-null constraint
(asalkan Anda membuat customer_id tidak dapat dibatalkan, yang saya yakin Anda lakukan). Ketika pengecualian itu terjadi, masukkan pelanggan ke dalam tabel pelanggan dan ulangi penyisipan ke tabel pesanan:
insert into customer(name) values ('John');
insert into "order" (customer_id, price) values \
((select customer_id from customer where name = 'John'), 12.34);
Kecuali jika bisnis Anda tumbuh pada tingkat yang akan membuat "di mana harus meletakkan semua uang" satu-satunya masalah Anda yang sebenarnya, sebagian besar sisipan Anda akan ditujukan untuk pelanggan yang sudah ada. Jadi, sebagian besar waktu, pengecualian tidak akan terjadi dan Anda akan selesai dalam satu pernyataan.