W MySQL, w jaki sposób uzyskać listę wszystkich ograniczeń kluczy obcych wskazujących na określoną tabelę? konkretna kolumna? To jest to samo, co pytanie Oracle , ale w przypadku MySQL.
mysql
foreign-keys
innodb
Christian Oudard
źródło
źródło
where REFERENCED_TABLE_SCHEMA = 'mydatabase' and REFERENCED_TABLE_NAME = 'mytable'
EDYCJA: Jak wskazano w komentarzach, nie jest to poprawna odpowiedź na pytanie PO, ale warto znać to polecenie. To pytanie pojawiło się w Google, czego szukałem, i pomyślałem, że zostawię tę odpowiedź innym.
Znalazłem tę odpowiedź tutaj: MySQL: pokaż ograniczenia komendy tabel
Potrzebowałem tego, ponieważ chciałem zobaczyć, jak działa FK, a nie tylko sprawdzić, czy istnieje.
źródło
<yourtable>
, a nie wszystkie, które wskazują<yourtable>
.display foreign keys mysql
Google, być może dlatego;)Jeśli używasz InnoDB i zdefiniowałeś FK, możesz zapytać o bazę danych information_schema, np .:
źródło
Publikowanie starej odpowiedzi w celu dodania użytecznych informacji.
Miałem podobny problem, ale chciałem też zobaczyć CONSTRAINT_TYPE wraz z tabelą REFERENCED i nazwami kolumn. Więc,
Aby zobaczyć wszystkie FK w tabeli:
Aby zobaczyć wszystkie tabele i FK w schemacie:
Aby zobaczyć wszystkie FK w bazie danych:
Zapamiętaj!
Wykorzystuje to silnik pamięci InnoDB. Jeśli po dodaniu ich nie możesz wyświetlić żadnych obcych kluczy, prawdopodobnie oznacza to, że Twoje tabele używają MyISAM.
Sprawdzić:
Aby to naprawić, użyj tego:
źródło
Alternatywnie do odpowiedzi Węzła, jeśli używasz InnoDB i zdefiniowałeś FK, możesz zapytać do bazy danych schemat_informacyjny np .:
dla kluczy obcych z <tabela> lub
dla kluczy obcych do <tabela>
Możesz także uzyskać UPDATE_RULE i DELETE_RULE, jeśli chcesz.
źródło
To rozwiązanie wyświetli nie tylko wszystkie relacje, ale także nazwę ograniczenia, która jest wymagana w niektórych przypadkach (np. Ograniczenie upuszczenia):
Jeśli chcesz sprawdzić tabele w określonej bazie danych, na końcu zapytania dodaj nazwę schematu:
Podobnie, dla konkretnej nazwy kolumny dodaj
na końcu zapytania.
Inspirowany tym postem tutaj
źródło
Korzystanie z REFERENCED_TABLE_NAME nie zawsze działa i może mieć wartość NULL. Zamiast tego może działać następujące zapytanie:
źródło
Szybki sposób na wyświetlenie listy FK (odniesienia do klucza obcego) za pomocą
W tym zapytaniu założono, że ograniczenia oraz wszystkie tabele, do których istnieją odniesienia i tabele, są w tym samym schemacie.
Dodaj swój komentarz.
Źródło: oficjalny podręcznik mysql.
źródło
Rozwiązanie, które wymyśliłem, jest kruche; opiera się na konwencji nazewnictwa django dla kluczy obcych.
Następnie w skorupce
źródło
Aby znaleźć wszystkie tabele zawierające określony klucz obcy, taki jak
employee_id
źródło
Jeśli chcesz również uzyskać nazwę kolumny klucza obcego:
źródło