[英]My first question — Violation of PRIMARY KEY constraint
我遇到以下問題:我想執行一個腳本,在其中嘗試將我還原的數據庫(iNode-8-24-14-Orig)中的數據插入到我創建的數據庫中。
代碼是:
/****************************************************/
SET IDENTITY_INSERT [dbo].[XHQ_HIER_DEF] ON;
GO
INSERT INTO [dbo].[XHQ_HIER_DEF]
([HIER_KEY]
,[HIER_NAME]
,[HIER_DESC]
,[SYNONYM_DEF_LEVEL]
,[CRT_XHQUSERID]
,[CRT_TIMESTAMP]
,[CRT_TZ_BIAS]
,[UPDT_XHQUSERID]
,[UPDT_TIMESTAMP]
,[UPDT_TZ_BIAS])
SELECT [HIER_KEY]
,[HIER_NAME]
,[HIER_DESC]
,[SYNONYM_DEF_LEVEL]
,[CRT_XHQUSERID]
,[CRT_TIMESTAMP]
,[CRT_TZ_BIAS]
,[UPDT_XHQUSERID]
,[UPDT_TIMESTAMP]
,[UPDT_TZ_BIAS]
FROM [iNode-8-24-14-Orig].[dbo].[XHQ_HIER_DEF]
GO
SET IDENTITY_INSERT [dbo].[XHQ_HIER_DEF] OFF;
GO
/****************************************************/
但我得到每個表此錯誤:
違反主鍵約束'XPKXHQ_HIER_DEF'。 無法在對象'dbo.XHQ_HIER_DEF'中插入重復的密鑰。 重復鍵值為(1)。
知道我該如何解決嗎? 我想提到的是,兩個數據庫中的表和列都相同。 我知道我在說我已經在使用相同的主鍵,但是我不知道如何解決它。
這是我在本網站上的第一個問題。
我們在乎...為什么?
任何想法我該如何解決?
讀取錯誤,修復數據? 該錯誤非常清楚地說明了問題所在:
無法在對象'dbo.XHQ_HIER_DEF'中插入重復的密鑰。
不要多次插入相同的鍵值。 期。 如果將字段定義為主鍵,則每個定義中的值在鍵中都是唯一的。
已經有一個標識為1的條目,或者您的源數據有多個具有相同值的行,這對於您的數據模型而言無效。
通常對於此類問題,實際讀取錯誤會有所幫助。 在您的情況下,在描述中非常清楚地指出了問題所在,甚至為您提供了引起問題的值:
重復鍵值為(1)。
解決方案顯而易見:不要插入重復的主鍵值。
從你我想:
HIER_KEY
字段 所以:
/****************************************************/
SET IDENTITY_INSERT [dbo].[XHQ_HIER_DEF] ON;
GO
INSERT INTO [dbo].[XHQ_HIER_DEF]
([HIER_KEY]
,[HIER_NAME]
,[HIER_DESC]
,[SYNONYM_DEF_LEVEL]
,[CRT_XHQUSERID]
,[CRT_TIMESTAMP]
,[CRT_TZ_BIAS]
,[UPDT_XHQUSERID]
,[UPDT_TIMESTAMP]
,[UPDT_TZ_BIAS])
SELECT [HIER_KEY]
,[HIER_NAME]
,[HIER_DESC]
,[SYNONYM_DEF_LEVEL]
,[CRT_XHQUSERID]
,[CRT_TIMESTAMP]
,[CRT_TZ_BIAS]
,[UPDT_XHQUSERID]
,[UPDT_TIMESTAMP]
,[UPDT_TZ_BIAS]
FROM [iNode-8-24-14-Orig].[dbo].[XHQ_HIER_DEF] T1
WHERE NOT EXISTS(
SELECT 1 FROM [dbo].[XHQ_HIER_DEF] T2
WHERE
T1.HIER_KEY = T2.HIER_KEY
)
GO
SET IDENTITY_INSERT [dbo].[XHQ_HIER_DEF] OFF;
GO
/****************************************************/
警告:這種刀片的性能可能特別糟糕。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.