僅當使用了列的列表,並且 IDENTITY_INSERT 為 ON 時,才能在表中為標識列指定顯式值問題


今天在處理數據庫過程中碰到這樣的問題在插入一條數據到表中

系統報這樣的錯誤

僅當使用了列的列表,並且 IDENTITY_INSERT 為 ON 時,才能在表中為標識列指定顯式值問題

表有一列是自增長的標識列 ”字段1“

如果這樣插入

SET IDENTITY_INSERT platform..as_userinfo ON

INSERT INTO platform..As_UserInfo values('110','張飛','男',20120401,18,'團員',2008-3-1)

SET IDENTITY_INSERT platform..as_userinfo OFF

系統就會報這樣的錯誤 僅當使用了列的列表,並且 IDENTITY_INSERT 為 ON 時,才能在表中為標識列指定顯式值問題

 

指定列列表后就可以正常插入數據,即必須把表明的字段一個一個列出來才可以正常插入,如下:

SET IDENTITY_INSERT platform..as_userinfo ON

 INSERT INTO platform..As_UserInfo(字段1,字段2,字段3,字段4,字段5,字段6) values('110','張飛','男',20120401,18,'團員',2008-3-1)

SET IDENTITY_INSERT platform..as_userinfo OFF

 

另,如果需要刪除有主外鍵關聯的一些表數據,第一次刪除時一般會出現因有主外鍵關聯而報錯不能刪除一些數據,

解決這個問題是,多執行幾次刪除主外鍵表的語句即可,每次執行都會把能刪除的表的數據盡量刪除,如每次都會刪除外鍵表的數據,

外鍵表的數據刪除后,相關聯的的主鍵表的數據也就能刪除了,這樣執行下去,數據就會越來越少,直至把符合條件的數據完全刪除,如:

ID為兩表主鍵,

INSERT INTO [dbo].[Category](ID, CategoryName)
SELECT 1,'111'

INSERT INTO [dbo].[Category](ID, CategoryName)
SELECT 2,'222'

INSERT INTO [dbo].[Category](ID, CategoryName)
SELECT 3,'333'

INSERT INTO [dbo].[Category](ID, CategoryName)
SELECT 4,'444'

INSERT INTO [dbo].[Product](ID,CategoryID,ProductName)
SELECT 1,1,'p111'

INSERT INTO [dbo].[Product](ID,CategoryID,ProductName)
SELECT 2,1,'p12211'

INSERT INTO [dbo].[Product](ID,CategoryID,ProductName)
SELECT 3,1,'p1233211'

INSERT INTO [dbo].[Product](ID,CategoryID,ProductName)
SELECT 4,2,'p1233211'

 

DELETE FROM [dbo].[Category]

DELETE FROM [dbo].[Product]


免責聲明!

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



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