久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

SQL 插入失敗 - 違反主鍵約束

SQL Insert Failing - Violation of Primary Key Constraint(SQL 插入失敗 - 違反主鍵約束)
本文介紹了SQL 插入失敗 - 違反主鍵約束的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我發現 SQL Insert 語句有一個非常奇怪的問題,我有一個簡單的表,有一個 ID 和 2 個日期時間,請參閱下面的創建腳本 -

I am seeing a very strange issue with a SQL Insert statement, I have a simple table, with an ID and 2 datetimes, see create script below -

CREATE TABLE [dbo].[DATA_POPULATION_LOGS](
    [ID] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
    [START] [datetime] NOT NULL,
    [FINISH] [datetime] NOT NULL,
 CONSTRAINT [PK__DATA_POP__3214EC2705D8E0BE] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

我現在正在嘗試運行以下插入腳本 -

I am now trying to run the following insert script -

INSERT INTO [dbo].[DATA_POPULATION_LOGS]
           ([START]
           ,[FINISH])
     VALUES
           (GETDATE()
           ,GETDATE())

由于以下錯誤而失敗 -

It is failing with the following error -

Msg 2627, Level 14, State 1, Line 1
Violation of PRIMARY KEY constraint 'PK__DATA_POP__3214EC2705D8E0BE'. Cannot insert duplicate key in object 'dbo.DATA_POPULATION_LOGS'. The duplicate key value is (11).

每次執行insert時,上面錯誤信息中的重復鍵值都會增加,所以它似乎知道它是一個標識列.

The duplicate key value in the error message above increases every time the insert is executed, so it seems to know it is an identity column.

是什么導致了這個問題?!

What would be causing this issue?!

提前致謝.西蒙

編輯

我現在已經創建了該表的副本,并且可以使用該腳本將其插入到新表中,可能導致它失敗的原因是什么?

I have now created a copy of this table and can insert into the new table fine using that script, what could be causing it to fail?

推薦答案

可能有人針對該表發出了 DBCC CHECKIDENT.當您這樣做時,SQL Server 將服從您,并嘗試從 RESEED 開始生成值并以增量遞增.它不會首先檢查這些值是否已經存在(即使存在 PK).產生相同錯誤的簡單重現:

Probably someone issued DBCC CHECKIDENT against the table. When you do this, SQL Server will obey you, and try to generate values starting from the RESEED and incrementing by the increment. It doesn't check first to see if those values already exist (even if there is a PK). Simple repro that generates the same error:

USE tempdb;
GO
CREATE TABLE dbo.floob(ID INT IDENTITY(1,1) PRIMARY KEY);
GO
INSERT dbo.floob DEFAULT VALUES;
GO
DBCC CHECKIDENT('dbo.floob', RESEED, 0);
GO
INSERT dbo.floob DEFAULT VALUES;
GO
DROP TABLE dbo.floob;

為了防止這種情況發生,你可以弄清楚現在的最大值是多少,然后再次運行CHECKIDENT:

To stop this from happening, you could figure out what the max value is now, and then run CHECKIDENT again:

DBCC CHECKIDENT('dbo.tablename', RESEED, <max value + 10 or 20 or something here>);

這篇關于SQL 插入失敗 - 違反主鍵約束的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

Converting Every Child Tags in to a Single Column with multiple Delimiters -SQL Server (3)(將每個子標記轉換為具有多個分隔符的單列-SQL Server (3))
How can I create a view from more than one table?(如何從多個表創建視圖?)
Create calculated value based on calculated value inside previous row(根據前一行內的計算值創建計算值)
How do I stack the first two columns of a table into a single column, but also pair third column with the first column only?(如何將表格的前兩列堆疊成一列,但也僅將第三列與第一列配對?) - IT屋-程序員軟件開發技
Recursive t-sql query(遞歸 t-sql 查詢)
Convert Month Name to Date / Month Number (Combinations of Questions amp; Answers)(將月份名稱轉換為日期/月份編號(問題和答案的組合))
主站蜘蛛池模板: 精品日韩一区 | 国产精品视频一 | www.久| 国产激情视频网站 | 久久r免费视频 | 国产一区二区不卡 | 亚洲一区二区三区免费在线 | 欧美日韩免费在线 | 亚洲国产精品久久久久秋霞不卡 | 国产精品一区视频 | 国产高清视频一区二区 | 久久亚洲精品国产精品紫薇 | 精品九九在线 | 久久久久久久久久久久一区二区 | 国产乱肥老妇国产一区二 | 精品久久国产 | 色男人的天堂 | 99爱国产 | 国产精品久久久久久一区二区三区 | 在线精品一区 | 91精品久久久久久久久中文字幕 | 欧美成人综合 | 国产精品久久 | 欧美成人精品一区二区男人看 | www.9191| 国产成人免费视频网站高清观看视频 | 午夜激情国产 | 91精品一区二区 | 久久亚洲国产精品 | 日韩精品一区二区三区免费视频 | 日韩欧美一区二区三区免费观看 | 毛片av免费在线观看 | 日韩一区二区三区四区五区六区 | 成人黄色av网站 | 国产精品2区 | 在线亚洲欧美 | 综合五月婷 | 亚洲欧洲一区 | 91影院在线观看 | 一二区成人影院电影网 | 韩国理论电影在线 |