[SQL] MySQL은 : 프로그래밍 방식으로 외래 키 관계를 결정하기 위해?
SQLMySQL은 : 프로그래밍 방식으로 외래 키 관계를 결정하기 위해?
이 질문에 있지만, MySQL 용 비슷한 ....
어떻게 프로그래밍 (이노 가정)의 MySQL에서 외래 키 참조를 확인할 수 있습니까? 나는 거의 그들과 함께 얻을 수 있습니다 :
SHOW TABLE STATUS WHERE Name = 'MyTableName';
...하지만 슬프게도, 나는 그것에 의존하지 수 있도록이 정보 중 일부는 잘립니다 포함 보인다 주석 열입니다. 다른 방법이 있어야합니다 ...
나는 C API 호출, SQL 문, 아무것도 드리겠습니다 - 난 그냥 일관되게 작동하는 무언가가 필요합니다.
참고 : 나는 또한 문을 "표 MyTableName을 만들 SHOW"는 결과를 분석 생각했지만, 정말 간단한 일이있다 바라고 있어요.
해결법
-
==============================
1.INFORMATION_SCHEMA.TABLE_CONSTRAINTS 및 INFORMATION_SCHEMA.KEY_COLUMN_USAGE :이 정보를 얻기 위해 조회 할 수 있습니다 두 개의 테이블이 있습니다.
INFORMATION_SCHEMA.TABLE_CONSTRAINTS 및 INFORMATION_SCHEMA.KEY_COLUMN_USAGE :이 정보를 얻기 위해 조회 할 수 있습니다 두 개의 테이블이 있습니다.
여기 당신이 찾는 정보를 얻을하는 방법을 보여줍니다 위에 링크 후자의 페이지에 코멘트에서 쿼리입니다.
SELECT CONCAT( table_name, '.', column_name, ' -> ', referenced_table_name, '.', referenced_column_name ) AS list_of_fks FROM INFORMATION_SCHEMA.key_column_usage WHERE referenced_table_schema = 'test' AND referenced_table_name IS NOT NULL ORDER BY table_name, column_name;
스키마 이름 대신 '테스트'이상을 사용하십시오.
-
==============================
2.여기에서 @ 빌 솔루션을 통해 약간의 개선이있다 :
여기에서 @ 빌 솔루션을 통해 약간의 개선이있다 :
SELECT CONSTRAINT_SCHEMA AS db, CONCAT ( TABLE_NAME, '.', COLUMN_NAME, ' -> ', REFERENCED_TABLE_NAME, '.', REFERENCED_COLUMN_NAME ) AS relationship FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE REFERENCED_TABLE_NAME = 'your_table_name' ORDER BY CONSTRAINT_SCHEMA, TABLE_NAME, COLUMN_NAME;
이 경우 나는 "your_table_name"필드와의 관계에 의해 필터링되고 관계가 제공하는 데이터베이스에서보고.
-
==============================
3.시도의 INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS
시도의 INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS
-
==============================
4.빌 Karwin에 따라, 나는 내가 필요한 모든 정보를 얻기 위해이 솔루션을 사용 대답 on_delete 및 on_update 규칙을 포함 :
빌 Karwin에 따라, 나는 내가 필요한 모든 정보를 얻기 위해이 솔루션을 사용 대답 on_delete 및 on_update 규칙을 포함 :
SELECT kcu.referenced_table_schema, kcu.constraint_name, kcu.table_name, kcu.column_name, kcu.referenced_table_name, kcu.referenced_column_name, rc.update_rule, rc.delete_rule FROM INFORMATION_SCHEMA.key_column_usage kcu JOIN INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS rc on kcu.constraint_name = rc.constraint_name WHERE kcu.referenced_table_schema = 'db_name' AND kcu.referenced_table_name IS NOT NULL ORDER BY kcu.table_name, kcu.column_name
-
==============================
5.
SELECT TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME, REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE REFERENCED_TABLE_NAME = 'table_name' AND TABLE_SCHEMA = 'table_schema';
from https://stackoverflow.com/questions/273794/mysql-how-to-determine-foreign-key-relationships-programmatically by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 선별에 SQLite는 지원에게 IF (조건) 문의 어떤 종류를합니까 (0) | 2020.06.25 |
---|---|
[SQL] 부모 자식 관계에 대한 SQL 쿼리 (0) | 2020.06.25 |
[SQL] 구체화 된 경로 트리를 정렬? (0) | 2020.06.25 |
[SQL] 단정를 사용하면 5 개 이상 유형의지도로 (0) | 2020.06.25 |
[SQL] 얼마나 멀리 정상화를 취할? [닫은] (0) | 2020.06.25 |