[SQL] 스크립트 SQL은 특정 테이블에 대한 외부 키를 찾는 방법은?
SQL스크립트 SQL은 특정 테이블에 대한 외부 키를 찾는 방법은?
나에게 특정 테이블 컬럼에 지시 외래 키를 얻을 것이다 쿼리가 있습니까? 예를 들어, 나는이 세 개의 테이블을 가지고 말 :
__________
|Table A |
----------
|Id |
----------
___________
|Table B |
-----------
|Id |
|TableAId | (Foreign Key to TableA.Id)
-----------
___________
|Table C |
-----------
|Id |
|TableAId | (Foreign Key to TableA.Id)
-----------
"표 B : TableAId"나는 "TableAId 표 C"를 반환 "TableA.Id에서 직접 선택 * 외래 키"의 라인을 따라 하나의 질의를 필요로한다. 나는 INFORMATION_SCHEMA 시스템 뷰의 일부를 검색하고있어, 나는 쉽게 외래 키가 개별적으로 표 A, 또는 표 B에 속한 볼 수있는 것처럼 보이지만 그것이 말하는 어디 찾을 수 없습니다 "표 C는에 외부 키를 가지고 구체적으로는 표 A ". 내가 쿼리의 특성을 알아낼 수, 난 그냥 (또는 내가 그들을 왜곡하고 있습니다)을 찾고 있어요 견해를 찾을 수 없습니다. 어떤 도움을 주시면 감사하겠습니다.
해결법
-
==============================
1.PINAL 데이브의 의례 :
PINAL 데이브의 의례 :
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
-
==============================
2.동적 드롭을 추가하고 DBO 방식에 만듭니다.
동적 드롭을 추가하고 DBO 방식에 만듭니다.
DECLARE @l varchar(1) = char(13); DECLARE @referenced_object_id varchar(MAX) = 'Replace_With_PK_Table_Name'; SELECT fk.name AS ForeignKey, OBJECT_NAME(fk.parent_object_id) AS TableName, COL_NAME(fkc.parent_object_id, fkc.parent_column_id) AS ColumnName, OBJECT_NAME (fk.referenced_object_id) AS ReferenceTableName, COL_NAME(fkc.referenced_object_id, fkc.referenced_column_id) AS ReferenceColumnName, 'ALTER TABLE [dbo].['+OBJECT_NAME(fk.parent_object_id)+'] DROP CONSTRAINT ['+fk.name+'];' DropFK, 'ALTER TABLE [dbo].['+OBJECT_NAME(fk.parent_object_id)+'] WITH NOCHECK ADD CONSTRAINT ['+fk.name+'] FOREIGN KEY(['+COL_NAME(fkc.referenced_object_id, fkc.referenced_column_id)+'])'+ @l + ' REFERENCES [dbo].['+OBJECT_NAME(fk.referenced_object_id)+'] (['+COL_NAME(fkc.referenced_object_id, fkc.referenced_column_id)+'])'+ @l + ' ON UPDATE CASCADE'+ @l + ' ON DELETE CASCADE;'+ @l + 'ALTER TABLE [dbo].['+OBJECT_NAME(fk.parent_object_id)+'] CHECK CONSTRAINT ['+fk.name+'];' CreateFK FROM sys.foreign_keys AS fk INNER JOIN sys.foreign_key_columns AS fkc ON fk.OBJECT_ID = fkc.constraint_object_id WHERE OBJECT_NAME(fk.referenced_object_id)=@referenced_object_id
from https://stackoverflow.com/questions/7853187/sql-script-to-find-foreign-keys-to-a-specific-table by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL Server의 일광 절약 시간 시작 및 종료 기능을 만드는 방법 (0) | 2020.07.03 |
---|---|
[SQL] 부동산의 열 이름은 최대 절전 모드로 매핑하기 (0) | 2020.07.03 |
[SQL] 변수를 사용하는 경우 SQL Server는 천천히가는 이유는 무엇입니까? (0) | 2020.07.03 |
[SQL] MySQL은 : 1 일 기준, 별개의 행을 카운트 (0) | 2020.07.03 |
[SQL] PostgreSQL의 테이블 변수 (0) | 2020.07.03 |