PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Postgres chèn giá trị từ chèn trong bảng khác

Bạn cần một biểu thức bảng chung cho loại chuỗi chèn này:

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));

Một tùy chọn khác là chỉ cần sử dụng lastval() hàm để tham chiếu đến giá trị trình tự được tạo cuối cùng:

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

Lưu ý rằng bạn không được có bất kỳ câu lệnh nào khác tạo ra các giá trị trình tự giữa hai câu lệnh đó.

Hoặc sử dụng hàm 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' là tên chuẩn mà Postgres sử dụng cho một chuỗi được tạo cho một serial cột:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ánh xạ trường điểm hình học PostGIS với Hibernate trên Spring Boot

  2. Gặp lỗi:Bạn phải cài đặt ít nhất một gói postgresql-client- <version> khi triển khai cho heroku

  3. Postgres UUID JDBC không hoạt động

  4. Postgresql - hiệu suất sử dụng mảng trong cơ sở dữ liệu lớn

  5. tại sao viết trong một bảng lại ngăn chặn chân không trong một bảng khác?