2012-11-29 6 views
0

다음과 같은 매우 간단한 외래 키 제약 조건을 고려 [Person].[id]을 참조하십시오.고유 인덱스 고유하지

[INFORMATION_SCHEMA].[REFERENTIAL_CONSTRAINTS] 외부 키 이름 [FK_Order_Person][uindex]으로 연결하는 행이 예상됩니다.

내 질문은 : INFORMATION_SCHEMA SQL Server Compact에서 사용해야합니다. 인덱스 [uindex]에 대한 테이블 및 열 정보는 어디서 얻을 수 있습니까?

[KEY_COLUMN_USAGE]에 가입하면 기본 키가 없으므로 아무런 결과가 표시되지 않습니다.

이 예제에서는 [INFORMATION_SCHEMA].[INDEXES]에 가입 할 수 있지만이 이름을 테이블이나 스키마간에 고유하게 적용하지 않으므로 다른 고유 키가 같은 이름으로 존재하면이 위치를 해결할 수 없습니다. 외래 키 포인트.

+0

그래서 당신이 관심이없는 고유 한 인덱스가있을 수 있기 때문에 실제로 원하는 것은 인덱스 정보가 아니라, 외래 키 제약 조건과 참조하는 필드가 필요하기 때문입니다. –

+0

수정. 나는 외래 키 정보 인 FK (table, column [s])와 참조 된 (table, column [s]) 정보를 가지고있다. – johnDisplayClass

답변

0
   "SELECT KCU1.TABLE_NAME AS FK_TABLE_NAME, KCU1.CONSTRAINT_NAME AS FK_CONSTRAINT_NAME, KCU1.COLUMN_NAME AS FK_COLUMN_NAME, " + 
      "KCU2.TABLE_NAME AS UQ_TABLE_NAME, KCU2.CONSTRAINT_NAME AS UQ_CONSTRAINT_NAME, KCU2.COLUMN_NAME AS UQ_COLUMN_NAME, RC.UPDATE_RULE, RC.DELETE_RULE, KCU2.ORDINAL_POSITION AS UQ_ORDINAL_POSITION, KCU1.ORDINAL_POSITION AS FK_ORDINAL_POSITION " + 
      "FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS RC " + 
      "JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE KCU1 ON KCU1.CONSTRAINT_NAME = RC.CONSTRAINT_NAME " + 
      "JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE KCU2 ON KCU2.CONSTRAINT_NAME = RC.UNIQUE_CONSTRAINT_NAME AND KCU2.ORDINAL_POSITION = KCU1.ORDINAL_POSITION AND KCU2.TABLE_NAME = RC.UNIQUE_CONSTRAINT_TABLE_NAME " + 
      "WHERE KCU1.TABLE_NAME = '" + tableName + "' " + 
      "ORDER BY FK_TABLE_NAME, FK_CONSTRAINT_NAME, FK_ORDINAL_POSITION" 

가 그리고 그들이 그룹화 할 필요가

+0

UNIQUE_CONSTRAINT_NAME은 키가 아닌 KCU에없는 인덱스의 이름이기 때문에 KCU2에 내부 조인 할 수 없습니다. – johnDisplayClass

0

이 문에 잘못된 가정이있다, 내용은 내 스크립트 API를 참조하십시오. 를 "나는 [INFORMATION_SCHEMA]에 가입 할 수이 예에서는 [인덱스] 그러나 어떤 규칙도이 이름을 테이블이나 스키마의 고유 한 이름으로 사용하지 않으므로 다른 고유 키가 같은 이름으로 존재하면이 외래 키가 어디에서 작동하는지 알 수 없습니다. "

Sql Compact에는 하나의 스키마 만 있으므로 테이블 이름과 인덱스 이름의 조합은 고유합니다. 또한 INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS 뷰에는 고유 제한 조건 테이블의 이름과 고유 제한 조건 이름이 포함됩니다.

그러나 INDEXES 뷰에는 실제로 인덱스 열당 하나의 행 (인덱스 정의 뷰는 없음)이 포함되어 있습니다. 그러나 이것은 외래 키 열과 고유 색인 열.

관련 문제