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

Cara mendapatkan kunci asing tabel anak memiliki nilai yang sama dengan kunci kenaikan otomatis utama induk

DEFAULT akan bekerja untuk SERIAL karena menetapkan nilai default untuk kolom. Jadi

INSERT INTO Purchase VALUES (DEFAULT,'Lendl');

harus bekerja. Tapi PurchasedItem.purchaseID tidak memiliki nilai default yang ditetapkan, jadi ia mencoba memasukkan NULL (dan null belum ada di kolom referensi), jadi gagal.

coba:

INSERT INTO Purchase(custName) VALUES ('Lendl') RETURNING purchaseID;

Anda akan melihat nilai yang dimasukkan purchaseID , gunakan dalam kueri berikutnya:

INSERT INTO PurchasedItem(purchaseID, itemNo) VALUES (_the_value_above_, 111);
commit;

Jika Anda ingin digunakan tanpa interaktivitas, gunakan DO blokir dengan returning purchaseID into _value

perbarui :

atau cte, seperti

WITH i AS (
  INSERT INTO Purchase(custName, orderedDate) 
  VALUES ('Lendl', '2016-09-28') 
  RETURNING purchaseID
)
insert into PurchasedItem
select i.purchaseID,'smth',3
from i


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengekspor data yang berisi umpan baris sebagai CSV dari PostgreSQL

  2. Mengapa semua database memiliki skema publik di PostgreSQL?

  3. Cara menyimpan objek JSON ke PostgreSQL menggunakan tipe data JSONB di dalam tabel dan driver JDBC PostgreSQL

  4. Bisakah saya menggunakan fungsi Postgres untuk menemukan titik di dalam persegi panjang berputar dengan ukuran tetap?

  5. Ikhtisar Serial Pseudo-Datatype untuk PostgreSQL