반응형
데이터베이스의 모든 외래 키를 나열 할 수 있습니까?
sqlserver 데이터베이스의 모든 FK를 어떻게 나열합니까?
이 문장을 사용하는데 꽤 잘 작동하는 것 같습니다.
SELECT RC.CONSTRAINT_NAME FK_Name
, KF.TABLE_SCHEMA FK_Schema
, KF.TABLE_NAME FK_Table
, KF.COLUMN_NAME FK_Column
, RC.UNIQUE_CONSTRAINT_NAME PK_Name
, KP.TABLE_SCHEMA PK_Schema
, KP.TABLE_NAME PK_Table
, KP.COLUMN_NAME PK_Column
, RC.MATCH_OPTION MatchOption
, RC.UPDATE_RULE UpdateRule
, RC.DELETE_RULE DeleteRule
FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS RC
JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE KF ON RC.CONSTRAINT_NAME = KF.CONSTRAINT_NAME
JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE KP ON RC.UNIQUE_CONSTRAINT_NAME = KP.CONSTRAINT_NAME
이론적으로 이것은 어렵습니다. 관계형 모델을 사용하면 모든 필드가 다른 필드와 관련 될 수 있습니다. 실제로 사용되는 것은 사용할 수있는 모든 가능한 SELECT 문에 의해 정의됩니다.
실제로는 FK 정의가 포함 된 테이블 수에 따라 다릅니다. 누군가가 모든 FK 참조를 신중하게 정의하고 SELECT 문이 이러한 규칙을 고수한다면 쿼리 할 수 있습니다.
그러나 SELECT 문은 무엇이든 조인 할 수 있기 때문에 모든 SELECT 문 이없는 경우 모든 FK 가 있다는 보장이 없습니다 .
편집 .
SELECT f.name AS ForeignKey,
OBJECT_NAME(f.parent_object_id) AS TableName,
COL_NAME(fc.parent_object_id, fc.parent_column_id) AS ColumnName,
OBJECT_NAME (f.referenced_object_id) AS ReferenceTableName,
COL_NAME(fc.referenced_object_id, fc.referenced_column_id) AS ReferenceColumnName
FROM sys.foreign_keys AS f
INNER JOIN sys.foreign_key_columns AS fc
ON f.OBJECT_ID = fc.constraint_object_id
당신을 위해 일할 수 있습니다.
http://technet.microsoft.com/en-us/library/ms189807.aspx를 사용합니다.
SELECT * FROM sys.foreign_keys
SQL Server 2005 이상을 사용 중이고 FK 이름 목록을 확인하려는 경우입니다.
그러나 당신은 아마도 관련된 테이블에 대해 더 많이 알고 싶을 것입니다. 당신은 대답이 유용한 곳입니다.
더 많은 정보를 제공하는 방법이 있습니다.
SELECT DISTINCT PARENT_TABLE =
RIGHT(Replace(TC.constraint_name, 'FK_', ''),
Len(Replace(TC.constraint_name, 'FK_', '')) - Charindex('_', Replace(TC.constraint_name, 'FK_', ''))),
CHILD_TABLE = TC.table_name,
CU.column_name,
TC.constraint_name,
TC.constraint_type
FROM information_schema.table_constraints TC
INNER JOIN information_schema.constraint_column_usage CU
ON TC.constraint_name = CU.constraint_name
WHERE TC.constraint_type LIKE '%foreign'
OR TC.constraint_type LIKE '%foreign%'
OR TC.constraint_type LIKE 'foreign%'
참고 URL : https://stackoverflow.com/questions/1229968/is-it-possible-to-list-all-foreign-keys-in-a-database
반응형
'Development Tip' 카테고리의 다른 글
내 사용자 정의보기에서 표준 속성 android : text를 사용하는 방법은 무엇입니까? (0) | 2020.12.07 |
---|---|
Glob 일치, 모든 JS 파일 제외 (0) | 2020.12.07 |
.NET 용 무료 바코드 API (0) | 2020.12.07 |
파이썬의 zip과 같은 PHP 함수가 있습니까? (0) | 2020.12.07 |
파이썬에서 다형성은 어떻게 작동합니까? (0) | 2020.12.07 |