Sql Server如何查询一个表的主键?

结论:直接使用代码。

选择t。
FROM user_cons_columns t WHERE t.table_name = 'TABLE_TEST' AND t.position IS NOT NULL;
检查表名大小写。

sql server 查看字段 是否主键

嘿,这个 SQL 查询真的很有趣。
乍一看,它是用来查询数据表的主键字段的。
我以前写过类似的脚本,但您必须根据您的特定需求进行调整。

首先,这个脚本主要针对单主键的表。
如果表是联合主键,那么我们必须稍微解决一下。
我以前也遇到过这样的情况。
一个表中有两个字段共同作为主键,那么这两个字段要分别处理。

我修改一下这条SQL,让它能够适应联合主键的情况:
sql USE [数据库名称]; 声明@id INT; 声明@index INT; 声明@columnId INT; 声明 @column VARCHAR(2 00); DECLARE @columns TABLE (name VARCHAR(2 00));
-
获取表的主键信息 SELECT TOP (1 ) @id = object_id FROM sys.tables WHERE name = '表名'; SELECT TOP (1 ) @index = index_id FROM sys.indexes WHERE object_id = @id AND is_primary_key = 1 ;
-
获取主键字段 SELECT TOP (1 ) @columnId = column_id FROM sys.index_columns WHERE object_id = @id AND index_id = @index; SELECT @column = name FROM sys.columns WITH (NOLOCK) WHERE object_id = @id AND column_id = @columnId;
-
如果是联合主键,则需要获取所有主键字段 如果存在(从 sys.index_columns 中选择 1 ,其中 object_id = @id AND index_id = @index AND key_ordinal > 1 ) 开始 插入@columns(名称) 选择c.name 来自 sys.index_columns ic 内连接 sys.columns c ON ic.object_id = c.object_id AND ic.column_id = c.column_id 其中 ic.object_id = @id AND ic.index_id = @index AND ic.key_ordinal > 1 ; END
-
输出结果 SELECT @column AS [主键字段]; SELECT c.name AS [联合主键字段] 来自@columns c;
该脚本会首先查询表的主键信息,然后判断是否是联合主键。
如果是,则将所有联合主键字段的名称插入到@columns表中,最后输出主键字段和所有联合主键字段。

当然,这只是一个基本的改造,具体的实现可能需要根据你的数据库结构和需求进行调整。
我自己没有运行过这个。
我记得数据在X左右,但我建议你检查一下。
希望这次改造能满足您的需求!