2009-12-24 4 views

답변

8

제약 조건과 인덱스가 자동으로 변경됩니다,하지만 당신은 수동으로 저장 프로 시저 참조, 트리거, 사용자 정의 함수 및 뷰에서 작업 이름을 변경해야합니다 탁자. the documentation on MSDN을 참조하십시오.

+0

아침에 쓸데없는 일을 저축 해 주셔서 대단히 감사드립니다. :-) – EvilDr

7

아니요, 테이블 이름을 변경하면 시스템 카탈로그의 적절한 메타 데이터도 업데이트되므로 제약 조건이 여전히 올바른 테이블을 참조하게됩니다.

원하는 경우 모든 외부 키를 식별하여 변경 내용의 유효성을 검사 할 수 있습니다.

SELECT PKTABLE_QUALIFIER = CONVERT(SYSNAME,DB_NAME()), 
     PKTABLE_OWNER = CONVERT(SYSNAME,SCHEMA_NAME(O1.SCHEMA_ID)), 
     PKTABLE_NAME = CONVERT(SYSNAME,O1.NAME), 
     PKCOLUMN_NAME = CONVERT(SYSNAME,C1.NAME), 
     FKTABLE_QUALIFIER = CONVERT(SYSNAME,DB_NAME()), 
     FKTABLE_OWNER = CONVERT(SYSNAME,SCHEMA_NAME(O2.SCHEMA_ID)), 
     FKTABLE_NAME = CONVERT(SYSNAME,O2.NAME), 
     FKCOLUMN_NAME = CONVERT(SYSNAME,C2.NAME), 
     -- Force the column to be non-nullable (see SQL BU 325751) 
     --KEY_SEQ    = isnull(convert(smallint,k.constraint_column_id), sysconv(smallint,0)), 
     UPDATE_RULE = CONVERT(SMALLINT,CASE OBJECTPROPERTY(F.OBJECT_ID,'CnstIsUpdateCascade') 
             WHEN 1 THEN 0 
             ELSE 1 
             END), 
     DELETE_RULE = CONVERT(SMALLINT,CASE OBJECTPROPERTY(F.OBJECT_ID,'CnstIsDeleteCascade') 
             WHEN 1 THEN 0 
             ELSE 1 
             END), 
     FK_NAME = CONVERT(SYSNAME,OBJECT_NAME(F.OBJECT_ID)), 
     PK_NAME = CONVERT(SYSNAME,I.NAME), 
     DEFERRABILITY = CONVERT(SMALLINT,7) -- SQL_NOT_DEFERRABLE 
FROM SYS.ALL_OBJECTS O1, 
     SYS.ALL_OBJECTS O2, 
     SYS.ALL_COLUMNS C1, 
     SYS.ALL_COLUMNS C2, 
     SYS.FOREIGN_KEYS F 
     INNER JOIN SYS.FOREIGN_KEY_COLUMNS K 
     ON (K.CONSTRAINT_OBJECT_ID = F.OBJECT_ID) 
     INNER JOIN SYS.INDEXES I 
     ON (F.REFERENCED_OBJECT_ID = I.OBJECT_ID 
      AND F.KEY_INDEX_ID = I.INDEX_ID) 
WHERE O1.OBJECT_ID = F.REFERENCED_OBJECT_ID 
     AND O2.OBJECT_ID = F.PARENT_OBJECT_ID 
     AND C1.OBJECT_ID = F.REFERENCED_OBJECT_ID 
     AND C2.OBJECT_ID = F.PARENT_OBJECT_ID 
     AND C1.COLUMN_ID = K.REFERENCED_COLUMN_ID 
     AND C2.COLUMN_ID = K.PARENT_COLUMN_ID 

이 스크립트에서 공급되었다 Identify all of your foreign keys in a SQL Server database

+0

정말 이삭 같은 물건입니다. 감사합니다. –

+0

도와 주셔서 감사합니다. –

+0

[여기] (http://stackoverflow.com/questions/8094156/know-relationships-between-all-the-tables-of-database-in-sql-server)는 ** 다른 스크립트 **이며, 희망은 누군가를 돕습니다. . – stom

관련 문제