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

Стойност на вмъкване на Postgres от вмъкване в друга таблица

Имате нужда от общ табличен израз за този вид верижно вмъкване:

with ta as (
  INSERT INTO tbl_b (status) VALUES ('OK') 
  RETURNING id
)
INSERT INTO tbl_a (name, tbl_b_reference) 
VALUES ('myName', (select id from ta));

Друг вариант е просто да използвате lastval() функция за препратка към последната генерирана стойност на последователност:

INSERT INTO tbl_b (status) VALUES ('OK');
INSERT INTO tbl_a (name, tbl_b_reference) 
  VALUES ('myName', lastval());

Имайте предвид, че не трябва да имате други изрази, които генерират стойности на последователност между тези две.

Или използвайте функцията currval():

INSERT INTO tbl_b (status) VALUES ('OK');
INSERT INTO tbl_a (name, tbl_b_reference) 
  VALUES ('myName', currval('tbl_b_id_seq'));

'tbl_b_id_seq' е стандартното име, което Postgres използва за последователност, която е създадена за serial колона:



  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. SQL Намерете всички преки наследници в дърво

  3. Случайно премахнати привилегиите на суперпотребител по подразбиране на postgres - мога ли да ги върна?

  4. Как да изпълнявам заявки при връзка с DB в Rails?

  5. Експортирайте конкретни редове от PostgreSQL таблица като INSERT SQL скрипт