今天在處理數據庫過程中碰到這樣的問題在插入一條數據到表中
系統報這樣的錯誤
僅當使用了列的列表,並且 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]