Di MySQL, bagaimana saya mendapatkan daftar semua batasan kunci asing yang menunjuk ke tabel tertentu? kolom tertentu? Ini adalah hal yang sama dengan pertanyaan Oracle ini , tetapi untuk MySQL.
mysql
foreign-keys
innodb
Christian Oudard
sumber
sumber
where REFERENCED_TABLE_SCHEMA = 'mydatabase' and REFERENCED_TABLE_NAME = 'mytable'
EDIT: Seperti yang ditunjukkan dalam komentar, ini bukan jawaban yang benar untuk pertanyaan OPs, tetapi berguna untuk mengetahui perintah ini. Pertanyaan ini muncul di Google untuk apa yang saya cari, dan saya pikir saya akan meninggalkan jawaban ini untuk orang lain temukan.
Saya menemukan jawaban ini di sini: MySQL: menunjukkan batasan pada perintah tabel
Saya membutuhkan cara ini karena saya ingin melihat bagaimana fungsi FK, bukan hanya melihat apakah ada atau tidak.
sumber
<yourtable>
, tidak semua kendala yang mengarah ke<yourtable>
.display foreign keys mysql
di google, mungkin itu sebabnya;)Jika Anda menggunakan InnoDB dan mendefinisikan FK, Anda dapat menanyakan database information_schema misalnya:
sumber
Posting pada jawaban lama untuk menambahkan beberapa informasi bermanfaat.
Saya memiliki masalah yang sama, tetapi saya juga ingin melihat CONSTRAINT_TYPE bersama dengan tabel dan kolom nama yang direferensikan. Begitu,
Untuk melihat semua FK di tabel Anda:
Untuk melihat semua tabel dan FK di skema Anda:
Untuk melihat semua FK di database Anda:
Ingat!
Ini menggunakan mesin penyimpanan InnoDB. Jika Anda tampaknya tidak bisa mendapatkan kunci asing untuk muncul setelah menambahkannya, itu mungkin karena tabel Anda menggunakan MyISAM.
Untuk memeriksa:
Untuk memperbaikinya, gunakan ini:
sumber
Sebagai alternatif untuk jawaban Node, jika Anda menggunakan InnoDB dan mendefinisikan FK, Anda dapat menanyakan database information_schema misalnya:
untuk kunci asing dari <table>, atau
untuk kunci asing ke <tabel>
Anda juga bisa mendapatkan UPDATE_RULE dan DELETE_RULE jika Anda menginginkannya.
sumber
Solusi ini tidak hanya akan menampilkan semua relasi tetapi juga nama kendala, yang diperlukan dalam beberapa kasus (mis. Drop contraint):
Jika Anda ingin memeriksa tabel dalam database tertentu, di akhir kueri tambahkan nama skema:
Demikian juga, untuk nama kolom tertentu, tambahkan
di akhir kueri.
Terinspirasi oleh pos ini di sini
sumber
Menggunakan REFERENCED_TABLE_NAME tidak selalu berfungsi dan bisa menjadi nilai NULL. Sebaliknya, kueri berikut dapat berfungsi:
sumber
Cara cepat untuk mendaftar FK Anda (referensi Kunci Asing) menggunakan
Kueri ini mengasumsikan bahwa kendala dan semua tabel referensi dan referensi berada dalam skema yang sama.
Tambahkan komentar Anda sendiri.
Sumber: manual resmi mysql.
sumber
Solusi yang saya temukan adalah rapuh; itu bergantung pada konvensi penamaan Django untuk kunci asing.
Kemudian, di shell,
sumber
Untuk menemukan semua tabel yang berisi kunci asing tertentu seperti
employee_id
sumber
Jika Anda juga ingin mendapatkan nama kolom kunci asing:
sumber