전: SqlServer 메 인 키 를 찾 는 네 가지 방법

링크 옮 기기: http://database.51cto.com/art/201010/230521.htm
 
 
SqlServer 는 여러 가지 SqlServer 메 인 키 를 찾 는 방법 이 있 습 니 다. 다음은 그 중의 네 가지 방법 을 소개 합 니 다. 참고 학습 을 제공 합 니 다. 그 중에서 첫 번 째, 두 번 째 방법 이 가장 간단 합 니 다.
1: SQL 자체 저장 프로 세 스 를 이용 하여 SqlServer 메 인 키 를 찾 습 니 다.
EXEC sp_pkeys @table_name='  '

2: 시스템 테이블 이용 INFORMATIONSCHEMA.KEY_COLUMN_USAGE 에서 SqlServer 메 인 키 를 찾 았 습 니 다:
SELECT TABLE_NAME,COLUMN_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE   
WHERE TABLE_NAME='  ' 

3: 아래 의 이 조회 표 구조의 문 구 는 모두 가 본 적 이 있 을 것 이다.
syscolumns, sysindexes, sysindexceys 세 개의 표 연결 을 이용 하여 SqlServer 메 인 키 를 찾 을 수 있 습 니 다.
SELECT   
 (case when a.colorder=1 then d.name else '' end) N'  ',  
 a.colorder N'    ',  
 a.name N'   ',  
 (case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end) N'  ',  
 (case when (SELECT count(*)  
 FROM sysobjects  
 WHERE (name in  
           (SELECT name  
          FROM sysindexes  
          WHERE (id = a.id) AND (indid in  
                    (SELECT indid  
                   FROM sysindexkeys  
                   WHERE (id = a.id) AND (colid in  
                             (SELECT colid  
                            FROM syscolumns  
                            WHERE (id = a.id) AND (name = a.name))))))) AND  
        (xtype = 'PK'))>0 then '√' else '' end) N'  ',  
 b.name N'  ',  
 a.length N'     ',  
 COLUMNPROPERTY(a.id,a.name,'PRECISION') as N'  ',  
 isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0) as N'    ',  
 (case when a.isnullable=1 then '√'else '' end) N'   ',  
 isnull(e.text,'') N'   ',  
 isnull(g.[value],'') AS N'    '  
--into ##tx  
 
FROM  syscolumns  a left join systypes b   
on  a.xtype=b.xusertype  
inner join sysobjects d   
on a.id=d.id  and  d.xtype='U' and  d.name<>'dtproperties'  
left join syscomments e  
on a.cdefault=e.id  
left join sysproperties g  
on a.id=g.id AND a.colid = g.smallid    
order by object_name(a.id),a.colorder  

 4:
select o.name as   ,c.name as    ,k.colid as     ,k.keyno as      from sysindexes i  
join sysindexkeys k on i.id = k.id and i.indid = k.indid  
join sysobjects o on i.id = o.id  
join syscolumns c on i.id=c.id and k.colid = c.colid  
where o.xtype = 'U' 
and exists(select 1 from sysobjects where xtype = 'PK' and name = i.name)  
order by o.name,k.colid  

 

좋은 웹페이지 즐겨찾기