SET IDENTITY_INSERT的用法

如果将值插入到表的标识列中,需要启用 SET IDENTITY_INSERT。

举例如下:

创建表Orders、Products,Orders表与Products表分别有标识列OrderID与ProductID:

表Orders,Products
1 CREATE TABLE Orders(
2 OrderID    INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
3 PriceDate DateTime
4 )
5 
6 CREATE TABLE Products(
7 ProductID    INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
8 PriceDate Datetime
9 )


当我们用如下插入语句往Orders表中插入数据:

插入到Orders表
1 INSERT INTO Orders (OrderID ,PriceDate ) VALUES(1,GETDATE())

执行此语句后,会出现如下错误:

把插入语句做如下修改:

修改后的插入语句
1 SET IDENTITY_INSERT Orders ON
2 INSERT INTO Orders (OrderID ,PriceDate ) VALUES(1,GETDATE())

此时执行成功;

我们在向Products表做如上插入:

插入到Products表
1 SET IDENTITY_INSERT Products ON
2 INSERT INTO Products (ProductID,PriceDate ) VALUES(1,GETDATE())

产生如下错误:

我们对sql做如下修改后,products表插入数据成功

 

修改后的sql
1 SET IDENTITY_INSERT Orders ON
2 INSERT INTO Orders (OrderID ,PriceDate ) VALUES(1,GETDATE())
3 SET IDENTITY_INSERT Orders OFF
4 
5 SET IDENTITY_INSERT Products ON
6 INSERT INTO Products (ProductID,PriceDate ) VALUES(1,GETDATE())
7 SET IDENTITY_INSERT Products OFF


可以看到当我们对表的Identity_Insert 的启用与关闭时成对出现,即

成对出现identity_INsert
1 SET IDENTITY_INSERT Products ON
2 --Code
3 SET IDENTITY_INSERT Products OFF


如果我们用下面的语句往Products表中插入数据

View Code
1 SET IDENTITY_INSERT Products ON
2 INSERT INTO Products SELECT * FROM Orders
3 SET IDENTITY_INSERT Products OFF

出现如下错误:

修改上面t-sql语句:

修改后的T-sql
1 SET IDENTITY_INSERT Products ON
2 INSERT INTO Products(ProductID,PriceDate) SELECT * FROM Orders
3 SET IDENTITY_INSERT Products OFF

可以知道如果对标识列进行插入,那么需要显示的列出标识列

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值