Joe*_*ank 1 sql sql-server sql-server-2012
每周一次(或左右),我在多线程应用程序中收到以下错误消息:
数据库中已存在名为"IX_MY_INDEX_NAME"的对象.无法创建约束.
有问题的SP创建临时表,如下所示:
--removed for brevity
CREATE TABLE #MyTable
(
[IndexId] INT UNIQUE IDENTITY (1, 1) NOT NULL,
[WhateverId] INT NOT NULL,
[CustomerId] INT NULL,
[VendorId] INT NULL,
CONSTRAINT IX_MY_INDEX_NAME UNIQUE (
WhateverId,
CustomerId,
VendorId
)
)
--removed for brevity
Run Code Online (Sandbox Code Playgroud)
是什么导致这种情况发生?上述陈述不是原子的吗?我错过了什么吗?
约束需要在数据库中唯一命名; 在上面的示例中,如果两个线程几乎同时执行,则在创建第二个线程时,可能存在具有该约束的临时表.
要执行您想要执行的操作,请在创建表后创建UNIQUE索引; 索引名称不必是唯一的.
| 归档时间: |
|
| 查看次数: |
987 次 |
| 最近记录: |