문제

모든 외래 키 목록을 얻으려면 SQL Server 2000 용 쿼리가 필요합니다.

특히 특정 열을 가리키는 모든 외국 키.

이 쿼리를 어떻게 작성합니까?

도움이 되었습니까?

해결책

select * from sysobjects
where xtype = 'F'

그것은 트릭을 수행하고 SQL Server 2000과 호환되어야합니다.

SQL Server 2000의 테이블 및 열 정보가 추가로 필요한 경우 조금 더 관여합니다. 당신은에 가입해야합니다 sysforeignkeys 그리고 syscolumns 그렇게하는 카탈로그보기 :

select
  so.name 'foreign key name',
  OBJECT_NAME(parent_obj) 'table',
  OBJECT_NAME(sf.fkeyid) 'referencing table',
  sc1.name 'referencing column',
  OBJECT_NAME(sf.rkeyid) 'referenced table',
  sc2.name 'referenced column'
from sysobjects so
inner join sysforeignkeys sf on so.id = sf.constid
inner join syscolumns sc1 on sf.fkeyid = sc1.id and sf.fkey = sc1.colid
inner join syscolumns sc2 on sf.rkeyid = sc2.id and sf.fkey = sc2.colid
where so.xtype in ('F','PK')

SQL Server 2000에서 실제로 사용할 수있는 information_schema 뷰를 활용하려면이 쿼리를 사용하십시오.

SELECT
    rc.CONSTRAINT_NAME,     
    rcu.TABLE_NAME 'Referencing Table', 
    rcu.COLUMN_NAME 'Referencing Column',
    rcu1.TABLE_NAME 'Referenced Table',
    rcu1.COLUMN_NAME 'Referenced Column'
FROM
    INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS rc
INNER JOIN 
    INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE rcu 
      ON rc.CONSTRAINT_CATALOG = rcu.CONSTRAINT_CATALOG 
         AND rc.CONSTRAINT_NAME = rcu.CONSTRAINT_NAME
INNER JOIN 
    INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE rcu1 
      ON rc.UNIQUE_CONSTRAINT_CATALOG = rcu1.CONSTRAINT_CATALOG 
         AND rc.UNIQUE_CONSTRAINT_NAME = rcu1.CONSTRAINT_NAME

마크

다른 팁

select * from INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS

키에 대한 자세한 정보가 필요한 경우 키에서 참조 된 열이 포함 된 Information_schema.key_column_usage view에 연결할 수 있습니다.

더 많은 아이디어를 얻으려면 sp_helpconstraint의 출처를 살펴 보지만 이것이 효과가 있어야합니다 ...

대상 테이블 및 열을 나타내는 모든 FK를 얻으려면

  • "YourTablename"교체
  • 마지막 "및"및 "대상 열 이름을 설정하십시오.

암호:

--list all tables & columns that refer to the given table
select
    k.name,pt.Name AS ParentTable,pc.name,c.constraint_column_id,ct.Name AS ReferedToTable,c.referenced_column_id,cc.Name
    from sys.foreign_keys                  k
        INNER JOIN sys.foreign_key_columns c ON k.parent_object_id=c.parent_object_id
        INNER JOIN sys.objects             pt ON c.parent_object_id=pt.object_ID
        INNER JOIN sys.objects             ct ON c.referenced_object_id=ct.object_ID
        INNER JOIN  sys.columns            pc ON c.parent_object_id=pc.object_ID AND c.parent_column_id=pc.column_id
        INNER JOIN  sys.columns            cc ON c.referenced_object_id=cc.object_ID AND c.referenced_column_id=cc.column_id
    where k.referenced_object_id = object_id('YourTableName')
        --AND pc.name='YourColumnName' --parent table column name
        --AND cc.name='YourColumnName' --referenced table's column name
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top