전: SqlServer 메 인 키 를 찾 는 네 가지 방법
3135 단어 SqlServer 홈 키 가 져 오기
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