test表结构
方法一
SELECT
TABLE_NAME,
COLUMN_NAME
FROM
INFORMATION_SCHEMA.KEY_COLUMN_USAGE
where TABLE_NAME ='test'
结果:
方法二
1.利用存储过程查出表明和主键名
exec sp_pkeys 'test'
2.存储在临时表或变量中
方法一存储在变量
BEGIN
Declare @tablevar table(
TABLE_QUALIFIER varchar(10) null,
TABLE_OWNER varchar(10) null,
TABLE_NAME varchar(10) null,
COLUMN_NAME varchar(10) null,
KEY_SEQ varchar(10) null,
PK_NAME varchar(50) null) ;
insert into @tablevar exec sp_pkeys 'test' ;
SELECT TABLE_NAME, COLUMN_NAME FROM @tablevar ;
END
方法三存储在临时表
create table #tab(
TABLE_QUALIFIER varchar(10),
TABLE_OWNER varchar(10),
TABLE_NAME varchar(10),
COLUMN_NAME varchar(10),
KEY_SEQ varchar(10),
PK_NAME varchar(50),
)
insert into #tab EXEC sp_pkeys @table_name='test'
SELECT TABLE_NAME, COLUMN_NAME FROM #tab
方法四(方法一变种,返回主键用连接符连接)
SELECT distinct
TABLE_NAME,
COLUMN_NAME=stuff((
SELECT '|'+COLUMN_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
where TABLE_NAME ='test'
FOR XML path('')
), 1, 1, '')
FROM
INFORMATION_SCHEMA.KEY_COLUMN_USAGE
where TABLE_NAME ='test'
结果
其他方法
--只能查到主键名
SELECT name FROM syscolumns WHERE id=Object_Id('test') and colid IN(SELECT keyno from sysindexkeys WHERE id=Object_Id('test'))