我有一个旧应用程序用作替代IDENTITY
各种其他表中的字段的表。
表中的每一行都存储了 中LastID
命名的字段的最后使用的 ID IDName
。
有时,存储过程会出现死锁——我相信我已经构建了一个合适的错误处理程序;但是我很想知道这种方法是否像我认为的那样有效,或者我是否在这里吠错了树。
我相当肯定应该有一种方法可以访问这个表,而不会出现任何死锁。
数据库本身配置了READ_COMMITTED_SNAPSHOT = 1
.
首先,这是表:
CREATE TABLE [dbo].[tblIDs](
[IDListID] [int] NOT NULL
CONSTRAINT PK_tblIDs
PRIMARY KEY CLUSTERED
IDENTITY(1,1) ,
[IDName] [nvarchar](255) NULL,
[LastID] [int] NULL,
);
Run Code Online (Sandbox Code Playgroud)
以及该IDName
字段上的非聚集索引:
CREATE NONCLUSTERED INDEX [IX_tblIDs_IDName]
ON [dbo].[tblIDs]
(
[IDName] ASC
)
WITH (
PAD_INDEX = OFF
, STATISTICS_NORECOMPUTE = OFF
, SORT_IN_TEMPDB = OFF
, DROP_EXISTING = OFF
, ONLINE = OFF
, ALLOW_ROW_LOCKS = ON
, ALLOW_PAGE_LOCKS = …
Run Code Online (Sandbox Code Playgroud)