我知道获取数据库表名的查询是:
SELECT *
FROM information_schema.tables
WHERE table_type = 'BASE TABLE'
如果表的主键由多列组成,如何获取表?或者获取特定表的复合主键?
我知道获取数据库表名的查询是:
SELECT *
FROM information_schema.tables
WHERE table_type = 'BASE TABLE'
如果表的主键由多列组成,如何获取表?或者获取特定表的复合主键?
如果我理解得很好,您可以使用 TSQL 进行一些选择。
程序:
exec sp_pkeys 'table', 'schema'
看法:
此查询也将返回具有唯一约束 e foreign_keys 的相关数据
select * from information_schema.key_column_usage
where table_schema = 'schema' and table_name = 'table'
如果您只想获取与主键相关的列,您可以尝试以下类似的操作。我认为它可以随着数据库版本而改变,我现在不确定。
select *
from information_schema.key_column_usage as k
where table_schema = 'schema' and table_name = 'table'
and constraint_name = (
select name
from sysobjects as u
where k.table_name = object_name(u.parent_obj)
and u.xtype = 'PK')
order by table_schema, table_name, ordinal_position
如果不是答案,请给我们更多细节。
尝试这个:
sp_helpindex 'YourTable'