我有这样的一个表: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