程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> MSSQL >> sql主動增加標識招致導入數據成績的處理辦法

sql主動增加標識招致導入數據成績的處理辦法

編輯:MSSQL

sql主動增加標識招致導入數據成績的處理辦法。本站提示廣大學習愛好者:(sql主動增加標識招致導入數據成績的處理辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是sql主動增加標識招致導入數據成績的處理辦法正文


關於一個設了主動增加標識的數據表來講,它的字段的值是由數據庫主動設置的;這在導數據時很費事。

當我們導數據時,我們常常想一想將標識字段的數據也導出去,怎樣辦呢?

辦法有兩種:

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
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved