Możesz to zrobić w jednym zestawieniu sql dla obecnych klientów, 3 zestawieniach dla nowych. Wystarczy być optymistą i zachowywać się tak, jakby klient już istniał:
insert into "order" (customer_id, price) values \
((select customer_id from customer where name = 'John'), 12.34);
Jeśli klient nie istnieje, otrzymasz wyjątek sql, którego tekst będzie wyglądał następująco:
null value in column "customer_id" violates not-null constraint
(pod warunkiem, że identyfikator_klienta nie może mieć wartości null, co na pewno tak zrobiłeś). W przypadku wystąpienia tego wyjątku wstaw klienta do tabeli klientów i ponów wstawianie do tabeli zamówień:
insert into customer(name) values ('John');
insert into "order" (customer_id, price) values \
((select customer_id from customer where name = 'John'), 12.34);
O ile Twoja firma nie rozwija się w tempie, które sprawi, że jedynym prawdziwym problemem będzie „gdzie umieścić wszystkie pieniądze”, większość Twoich wkładek będzie przeznaczona dla obecnych klientów. Tak więc w większości przypadków wyjątek nie wystąpi i wystarczy jedna instrukcja.