Jer*_*acs 7 sql sql-server sql-server-2005
由于大多数使用Sql Server的人都知道,你可以像这样声明一个临时表:
create table #foo
(
row_id int identity not null primary key,
bar varchar(50) not null default 'YoMomma'
);
Run Code Online (Sandbox Code Playgroud)
...这将在此临时表上创建主键和默认约束; 这些对象的名称将是唯一的,由Sql Server动态创建.
是否可以在创建表后为其创建动态命名的索引?我有一种情况,使用临时表的存储过程可能同时运行多个实例,我想提高性能,而不会冒tempdb数据库中具有相同名称的对象之间的冲突的风险. CREATE INDEX命令需要显式索引名称.
我正在寻找一个不涉及动态SQL的解决方案,只需要动态名称.
Mar*_*ith 14
这不是问题.索引名称不必是唯一的.只有约束名称才有.
因此,例如,您可以在多个并发连接中运行它,没有任何问题
CREATE TABLE #T
(
C INT
)
CREATE UNIQUE CLUSTERED INDEX ix on #T(C)
Run Code Online (Sandbox Code Playgroud)
但这会在并发下失败
ALTER TABLE #T
ADD CONSTRAINT UQ UNIQUE NONCLUSTERED (C)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3091 次 |
| 最近记录: |