SQL SERVER获得指定表的主键

本文介绍了如何通过系统存储过程和系统表查询数据库表的主键字段,包括使用EXECUTE sp_pkeys和从sysobjects、sysindexes、sysindexkeys表进行查询。

有时候要获得表主键字段,虽然系统自带有存储过程可以获得,但是对于熟悉系统表的话,自己写个也很容易。

 2     Declare @table_name varchar(100)
 3     Set @table_name='table_Pqs'
 4     --1、可以根据系统存储过程
 5     Execute   sp_pkeys @table_name
 6 
 7     --2、根据系统表获得
 8     Declare @objectid int
 9     Set @objectid=object_id(@table_name)
10     Select   
11     col_name(@objectid,colid)  '主键字段'
12     From  sysobjects         as o
13     Inner Join sysindexes    as i On i.name=o.name 
14     Inner Join sysindexkeys  as k On k.indid=i.indid
15     Where 
16     o.xtype = 'PK' and parent_obj=@objectid and k.id=@objectid

 

这里应用了sysobjects(对象表),sysindexes(索引表),sysindexkeys(索引键表)。 这个查询直接获取对象表里主键的索引来获得的。

转载于:https://www.cnblogs.com/yongtaiyu/p/4599930.html

### 创建带主键SQL Server 中创建包含主键格是一个常见的操作。以下是详细的说明和示例。 #### 使用 `CREATE TABLE` 语句定义主键 当使用 `CREATE TABLE` 语句创建新时,可以通过指定列属性来设置主键。这通常通过两种方式完成: - **单列主键** 如果只需要一个字段作为主键,则可以在该字段声明后面加上 `PRIMARY KEY` 关键字[^2]。 ```sql CREATE TABLE Employees ( EmployeeID int NOT NULL PRIMARY KEY, FirstName nvarchar(50), LastName nvarchar(50), HireDate date ); ``` - **多列组合主键** 对于复合主键(即由多个字段共同构成唯一标识),可以将这些字段放在括号内并紧跟 `PRIMARY KEY` 约束之后。 ```sql CREATE TABLE Orders ( OrderID int NOT NULL, ProductID int NOT NULL, Quantity smallint, CONSTRAINT PK_Orders PRIMARY KEY (OrderID, ProductID) ); ``` #### 添加现有上的主键约束 如果已经存在一张没有主键,并希望为其添加主键,那么应该先确认所选作主键的一列或多列不存在重复值以及NULL值。接着利用 `ALTER TABLE` 和 `ADD CONSTRAINT` 来实现这一目的。 ```sql -- 假设有一个名为 Customers 的,现在要给 CustomerID 列增加主键约束 ALTER TABLE Customers ADD CONSTRAINT PK_Customers PRIMARY KEY (CustomerID); -- 对于复合主键的情况如下所示 ALTER TABLE SalesRecords ADD CONSTRAINT PK_SalesRecords PRIMARY KEY (SalesPersonID, SaleDate); ``` 以上就是在 SQL Server 中创建含有主键的新或向已有中加入主键的方式。确保理解了每种情况下使用的具体语法有助于更高效地管理数据库中的数据完整性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值