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'))