2009-06-01 5 views
0

데이터가 데이터베이스의 한 테이블에서 주로 사용되고 여러 테이블에서 참조됩니다. 데이터를 수정해야합니다. 데이터베이스의 모든 테이블을 검색하고 데이터가 참조되는 모든 테이블을 반환하는 "where-used"문을 작성할 수 있습니까?SQL에서 사용 된 문

SQL 2005를 사용 중입니다.

감사합니다.

답변

1

나는이 SQL 문을 here을 발견했습니다

SELECT OBJECT_NAME(OBJECT_ID) AS NameofConstraint, 
SCHEMA_NAME(schema_id) AS SchemaName, 
OBJECT_NAME(parent_object_id) AS TableName, 
type_desc AS ConstraintType 
FROM sys.objects 
WHERE type_desc LIKE '%CONSTRAINT' 
AND OBJECT_NAME(OBJECT_ID) LIKE 'FK_%' 

참고 : - 나는 FK_로 시작하는 모든 외래 키 제약 조건의 이름을 그래서 그들을 필터링하기 쉽습니다.

+0

이는 전이 참조를 처리합니까? 여기서 TableA는 기본 키 열 A1을 정의합니다. TableB에는 A1을 참조하지만 B1, B2에 합성 기본 키가있는 외래 키 열 B1이 있습니다. TableC에는 열 (C1, C2)에 복합 외래 키가 있습니다.종종 A1을 참조하는 C1이 TableC에 대한 명시 적 외래 키 제약 조건을 갖지 않지만 다이어그램을 작성하면 C1 열의 모든 값도 A1 열의 값이어야합니다. 이것은 일반적인 문제가 아닙니다. 그것은 피할 수 있었을 지 모릅니다. 그러나 그것은 진짜 문제입니다. –

0

데이터베이스에 다이어그램을 추가하고 모든 테이블을 삭제하십시오. 질문을 올바르게 해석했다면 이미 존재하는 데이터베이스 스키마를 이해하려고 시도하고 있습니까? 다이어그램을 사용하는 경우 테이블 구조에서 데이터가 연결된 위치를 볼 수있는 참조가 그려집니다.

SQL의 경우 조인을 사용하거나 다른 테이블의 데이터를 연결하는 조건을 사용할 수 있습니다.

"수정 하시겠습니까?"

+0

우리는 정의 테이블에 두 번 입력 한 설명 자입니다. 그 중 하나를 제거해야하지만 ID는 여러 데이터베이스에서 사용되었습니다. 올바른 ID를 매핑하고 기존 복제본을 삭제해야합니다. –

0

Management Studio에서 테이블/뷰/저장 프로 시저를 마우스 오른쪽 단추로 클릭하고 종속성보기를 선택할 수 있습니다. 종속성 창에서 선택한 항목이 종속되어있는 개체를 보거나 선택한 항목에 종속 된 항목을 볼 수 있습니다.

0

사실 후에는 할 수 없지만 테이블 디자인시에는 "ON UPDATE CASCADE"와 관계를 설정할 수 있습니다.

0

데이터베이스에 외래 키가 실제로있는 경우 데이터베이스를 리버스 엔지니어링하여이 작업을 수행하는 스크립트 (this posting 참조)를 리버스 엔지니어링 할 수 있습니다. 이것이 사실이 아니라면 수동 탐정 작업을하는 것입니다.

Visio Professional에는 데이터베이스 리버스 엔지니어링 도구가 있습니다. 2003 SQL 서버 2005에서 잘 재생되지 않기 때문에 당신도 필요합니다

  • Visio 2007의

  • 을이 스키마 참조를 생성에 스크립트를로드하지 않도록 위의 링크 된 스크립트를 수정 SQL Server 2000 데이터베이스 그런 다음 SQL 2000 DB에서 리버스 엔지니어링하십시오. 당신이 외래 키가 있거나 불완전한 외래 키 범위가없는 경우

, 당신은에있는 키를 수동으로 주석 (데이터를 참조하는 유사하게 보이는 코드가있는 분야를 찾아, 예를 들어) 수동으로 찾아보실 수 있습니다 도표. FMS를 데이터베이스로 다시 채우려 고 시도 할 수 있기 때문에 SSMS에서 제공되는 다이어그램 작성 도구로이를 시도하지 마십시오.