PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Einfügen von Daten in Tabellen, die durch Fremdschlüssel verknüpft sind

Sie können dies in einer SQL-Anweisung für bestehende Kunden und 3 Anweisungen für neue tun. Alles, was Sie tun müssen, ist Optimist zu sein und so zu tun, als ob der Kunde bereits existiert:

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

Wenn der Kunde nicht existiert, erhalten Sie eine SQL-Ausnahme, deren Text etwa so aussieht:

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

(vorausgesetzt, Sie haben customer_id nicht-nullable gemacht, was Sie sicher getan haben). Wenn diese Ausnahme auftritt, fügen Sie den Kunden in die Kundentabelle ein und wiederholen Sie die Einfügung in die Bestelltabelle:

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

Wenn Ihr Unternehmen nicht so schnell wächst, dass es Ihr einziges wirkliches Problem ist, „wohin mit dem ganzen Geld“, werden die meisten Ihrer Beilagen für Bestandskunden bestimmt sein. Daher wird die Ausnahme meistens nicht auftreten und Sie werden in einer Anweisung fertig sein.