Apakah ada permintaan yang akan melakukannya?
Saya menemukan beberapa pertanyaan yang dapat melakukan ini untuk satu tabel, tetapi saya tidak dapat memodifikasinya sehingga saya dapat melihat:
tablename | column | type
postgresql
schema
korda
sumber
sumber
Jawaban:
Sesuatu seperti ini:
sumber
tc.constraint_type = 'PRIMARY KEY'
ini hanya akan menampilkan kunci utama. Namun setiap kunci utama didukung oleh indeks unikposition_in_unique_constraint
menunjukkan posisi untuk kunci ASING, selalu nol untuk kunci primer. Kolom yang benar adalahordinal_position
. Diuji dalam PG 9.4.ordinal_position
harus digunakan. Iniposition_in_unique_constraint
bukan nol hanya dalam penggunaan FK.Ini jawaban yang lebih akurat:
Anda melewatkan
and kc.constraint_name = tc.constraint_name
bagian tersebut, jadi itu mencantumkan semua kendala.sumber
and kc.position_in_unique_constraint is not null
. Dan Anda sangat dianjurkan untuk menggunakan ANSI JOINs (sementara banyak yang menganggapnya sebagai masalah selera).Harap pertimbangkan ini juga. Ini akan menghasilkan skrip untuk mengubah semua tabel.
sumber
Saya pikir untuk mendapatkan kunci primer dan kunci asing harus melakukan seperti ini. kc.position_in_unique_constraint bukan nol kondisi ini hanya dapat memperoleh kunci asing.
sumber