国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

sql自動增長標識導致導入數據問題的解決方法

2020-07-25 13:12:30
字體:
來源:轉載
供稿:網友
對于一個設了自動增長標識的數據表來說,它的字段的值是由數據庫自動設置的;這在導數據時很麻煩。

當我們導數據時,我們往往想想將標識字段的數據也導進來,怎么辦呢?

方法有兩種:

1.用數據庫管理工具在界面將表的自動增長標識去除,導完數據,再在界面里改回來。(這種方法麻煩,且要動數據表設置中,不推薦)

2.用SET IDENTITY_INSERT OFF和SET IDENTITY_INSERT ON(推薦這種方法)

SET IDENTITY_INSERT [ database_name . [ schema_name ] . ] table { ON | OFF }
database_name
指定的表所在的數據庫的名稱。

schema_name
表所屬架構的名稱。

table
包含標識列的表的名稱。

注釋
任何時候,一個會話中只有一個表的 IDENTITY_INSERT 屬性可以設置為 ON。如果某個表已將此屬性設置為 ON,則對另一個表發出 SET IDENTITY_INSERT ON 語句時,SQL Server 將返回一個錯誤信息,指出 SET IDENTITY_INSERT 已設置為 ON,并報告已將其屬性設置為 ON 的表。

如果插入值大于表的當前標識值,則 SQL Server 自動將新插入值作為當前標識值使用。


SET IDENTITY_INSERT 的設置是在執行或運行時設置的,而不是在分析時設置的。

權限
用戶必須擁有表,或對表具有 ALTER 權限。

示例
下面的示例將創建一個包含標識列的表,并說明如何使用 SET IDENTITY_INSERT 設置來填充由 DELETE 語句導致的標識值中的空隙。

復制代碼 代碼如下:

USE AdventureWorks2012;
GO
-- Create tool table.
CREATE TABLE dbo.Tool(
ID INT IDENTITY NOT NULL PRIMARY KEY,
Name VARCHAR(40) NOT NULL
)
GO
-- Inserting values into products table.
INSERT INTO dbo.Tool(Name) VALUES ('Screwdriver')
INSERT INTO dbo.Tool(Name) VALUES ('Hammer')
INSERT INTO dbo.Tool(Name) VALUES ('Saw')
INSERT INTO dbo.Tool(Name) VALUES ('Shovel')
GO


-- Create a gap in the identity values.
DELETE dbo.Tool
WHERE Name = 'Saw'
GO

SELECT *
FROM dbo.Tool
GO

-- Try to insert an explicit ID value of 3;
-- should return a warning.
INSERT INTO dbo.Tool (ID, Name) VALUES (3, 'Garden shovel')
GO

-- SET IDENTITY_INSERT to ON.
SET IDENTITY_INSERT dbo.Tool ON
GO

-- Try to insert an explicit ID value of 3.
INSERT INTO dbo.Tool (ID, Name) VALUES (3, 'Garden shovel')
GO

SELECT *
FROM dbo.Tool
GO
-- Drop products table.
DROP TABLE dbo.Tool
GO
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新沂市| 浮梁县| 七台河市| 新巴尔虎左旗| 稷山县| 措美县| 大名县| 惠州市| 南昌县| 哈尔滨市| 金溪县| 舞阳县| 黔江区| 石狮市| 磐安县| 黔南| 裕民县| 沂水县| 容城县| 新干县| 兖州市| 深圳市| 察隅县| 阜康市| 体育| 宁安市| 清丰县| 桐梓县| 荣昌县| 闽侯县| 平罗县| 浦县| 昂仁县| 婺源县| 崇礼县| 汝州市| 冕宁县| 谢通门县| 榆林市| 河津市| 青阳县|