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

Mengubah kunci utama menjadi kunci primer komposit

Anda dapat menambahkan UNIK kendala di id sebelum Anda menjatuhkan PRIMARY KEY paksaan. Itu memenuhi persyaratan kendala FK. Per dokumentasi:

Penekanan saya yang berani.

Jelas, batasan FK terikat dengan batasan PK yang dibuat dengan eksplisit di pg_depend . Jadi, Anda perlu menghapus dan kemudian membuat ulang semua batasan FK referensi atau mengacaukan tabel sistem (yang tidak disarankan!). Terbaik dalam satu transaksi untuk menjaga integritas referensial tetap utuh:

BEGIN;
ALTER TABLE bar DROP CONSTRAINT bar_id_foo_fkey;

ALTER TABLE foo 
    DROP CONSTRAINT foo_pkey
  , ADD CONSTRAINT foo_uni_id UNIQUE (id)
  , ADD PRIMARY KEY (id, id2);

ALTER TABLE bar ADD CONSTRAINT bar_id_foo_fkey
  FOREIGN KEY (id) REFERENCES foo (id);

COMMIT;

SQL Fiddle. (Dengan kueri untuk menampilkan entri katalog yang memberikan nama antara lain.)

Detail dalam manual di ALTER TABLE .

Ini hanya masuk akal sebagai keadaan perantara. Jika id tetap UNIQUE NOT NULL , mungkin juga PK.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tulis kerangka data percikan ke Database postgres

  2. menemukan kueri MAX(db_timestamp)

  3. Bilangan bulat di luar jangkauan dalam database PostgreSQL

  4. Bagaimana menemukan di mana fungsi sedang digunakan

  5. Kelompokkan menurut tanggal yang dipotong di JPA