데이터베이스에 모든 외부 키를 나열할 수 있습니까?
SQL 서버 데이터베이스에서 모든 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 문이 이러한 규칙을 고수하는 경우 해당 FK 참조를 쿼리할 수 있습니다.
그러나 SELECT 문은 어떤 것이든 참여할 수 있기 때문에 모든 SELECT 문을 가지고 있지 않는 한 모든 FK를 가지고 있다는 보장은 없습니다.
편집.
http://www.lostechies.com/blogs/jimmy_bogard/archive/2008/11/26/viewing-all-foreign-key-constraints-in-sql-server.aspx 을 참조하십시오.
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%'
select * from sys.objects where type = 'F'
언급URL : https://stackoverflow.com/questions/1229968/is-it-possible-to-list-all-foreign-keys-in-a-database
'programing' 카테고리의 다른 글
외부 레포 서브모듈을 사용하기 위해 깃 프로젝트를 설정하는 방법은 무엇입니까? (0) | 2023.07.01 |
---|---|
excel vba의 배열 (0) | 2023.07.01 |
특정 https 원격에 대한 특정 자체 서명 서버 인증서를 수락하도록 Git 구성 (0) | 2023.07.01 |
중복된 이름의 ID를 별도의 열로 이동하는 방법 (0) | 2023.07.01 |
iOS: 포인트가 rect 내부에 있는지 확인 (0) | 2023.07.01 |