SET IDENTITY_INSERT的用法,具體去體驗一下


如果將值插入到表的標識列中,需要啟用 SET IDENTITY_INSERT。

舉例如下:

創建表Orders、Products,Orders表與Products表分別有標識列OrderID與ProductID:

--表Orders,Products
CREATE TABLE Orders(
OrderID    INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
PriceDate DateTime
)

CREATE TABLE Products(
ProductID    INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
PriceDate Datetime
)

當我們用如下插入語句往Orders表中插入數據:

INSERT INTO Orders (OrderID ,PriceDate ) VALUES(1,GETDATE())

執行此語句后,會出現如下錯誤:

把插入語句做如下修改:

SET IDENTITY_INSERT Orders ON
INSERT INTO Orders (OrderID ,PriceDate ) VALUES(1,GETDATE())

此時執行成功;

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

SET IDENTITY_INSERT Products ON
INSERT INTO Products (ProductID,PriceDate ) VALUES(1,GETDATE())

產生如下錯誤:

我們對sql做如下修改后,products表插入數據成功

--修改后的sql
SET IDENTITY_INSERT Orders ON
INSERT INTO Orders (OrderID ,PriceDate ) VALUES(1,GETDATE())
SET IDENTITY_INSERT Orders OFF

SET IDENTITY_INSERT Products ON
INSERT INTO Products (ProductID,PriceDate ) VALUES(1,GETDATE())
SET IDENTITY_INSERT Products OFF

可以看到當我們對表的Identity_Insert 的啟用與關閉時成對出現,即

SET IDENTITY_INSERT Products ON
--Code
SET IDENTITY_INSERT Products OFF

如果我們用下面的語句往Products表中插入數據

SET IDENTITY_INSERT Products ON
INSERT INTO Products SELECT * FROM Orders
SET IDENTITY_INSERT Products OFF

出現如下錯誤:

修改上面t-sql語句:

SET IDENTITY_INSERT Products ON
INSERT INTO Products(ProductID,PriceDate) SELECT * FROM Orders
SET IDENTITY_INSERT Products OFF

可以知道如果對標識列進行插入,那么需要顯示的列出標識列

懷揣着一點點夢想的年輕人
相信技術和創新的力量
喜歡快速反應的工作節奏


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM