PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Вмъкване на данни в таблици, свързани с външен ключ

Можете да го направите с едно sql изявление за съществуващи клиенти, 3 изявления за нови. Всичко, което трябва да направите, е да бъдете оптимист и да се държите така, сякаш клиентът вече съществува:

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

Ако клиентът не съществува, ще получите sql изключение, чийто текст ще бъде нещо като:

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

(при условие, че сте направили customer_id без нула, което съм сигурен, че сте направили). Когато възникне това изключение, поставете клиента в таблицата с клиенти и повторете вмъкването в таблицата с поръчки:

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

Освен ако вашият бизнес не расте със скорост, която ще направи "къде да вложите всички пари" единственият ви реален проблем, повечето от вашите вложки ще бъдат за съществуващи клиенти. Така че през повечето време изключението няма да се случи и ще приключите с едно изявление.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да актуализирате масив в PostgreSQL

  2. Опитвам се да копирам файл, но получавам съобщение за грешка

  3. Типове данни на PostgreSQL и C#

  4. как мога да създам нов XML файл от съществуваща база данни в PostgreSQL база данни с помощта на java

  5. Изолация на транзакции в PostgreSQL