PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Nilai sisipkan Postgres dari sisipan di tabel lain

Anda memerlukan ekspresi tabel umum untuk jenis insert chaining ini:

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

Pilihan lain adalah dengan hanya menggunakan lastval() berfungsi untuk mereferensikan nilai urutan yang terakhir dibuat:

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

Perhatikan bahwa Anda tidak boleh memiliki pernyataan lain yang menghasilkan nilai urutan di antara keduanya.

Atau gunakan fungsi 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' adalah nama standar yang digunakan Postgres untuk urutan yang dibuat untuk serial kolom:



  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:Bagaimana cara menghindari tanda kutip tunggal di pemicu Database?

  2. Kesalahan PostgreSQL 42501:Izin Ditolak untuk Skema

  3. Berikan hak istimewa kepada semua pengguna, saat ini dan di masa mendatang

  4. Simpan hasil kueri dalam variabel menggunakan di PL/pgSQL

  5. Bagaimana cara mengubah kosong menjadi nol di PostgreSQL?