我有這樣的一個表:IDENT_CURRENT超過MAX(ID)返回價值不大
CREATE TABLE [dbo].[RequestQueue]
(
[QueueID] [BIGINT] IDENTITY(1,1) NOT NULL,
[EntryDate] [DATETIME] NULL
CONSTRAINT [DF_SecurityQueue_EntryDate] DEFAULT (GETDATE()),
[AsOfDate] [DATE] NULL,
[ItemID] [VARCHAR](32) NULL,
[ItemType] [VARCHAR](50) NULL,
[Message] [VARCHAR](MAX) NULL,
CONSTRAINT [PK_QueueID]
PRIMARY KEY CLUSTERED ([QueueID] ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
我有每天運行,將數據插入該表中的SQL作業,插入語句是這樣的:
INSERT INTO dbo.RequestQueue(AsOfDate , ItemID , ItemType)
VALUES (GETDATE(),'ABC1','TYPE1')
這每天的工作運行良好了一年多,直到昨晚打破了以下消息:
消息2627,級別14,狀態1,行25
違反PRIMARY KEY約束'PK_QueueID'。無法在對象'dbo.RequestQueue'中插入重複鍵。重複鍵值是(1698922)。
我檢查如下標識值:
SELECT IDENT_CURRENT('dbo.RequestQueue')
回報1698922
SELECT MAX([QueueID])
FROM [dbo].[RequestQueue]
回報1699269
什麼搞砸IDENT_CURRENT
?
SQL作業按日安排,每天運行一次。
有一些RequestQueue表的併發閱讀器,他們也發佈更新語句,但當然,從來沒有在PK列。
在其他地方沒有其他插入作業/過程。
難道你讓用戶手動插入記錄? – BJones
沒有手動插入,也沒有其他自動化過程。此表位於業務敏感的數據庫上,有控制層以防止手動數據操作。 –
桌子上是否有插入觸發器? – DForck42