创建临时表时如何不指定索引的显式名称?
临时表创建时无需指定索引显式名称的实现方法
你可以直接省略索引的显式名称,让SQL Server自动生成唯一的索引名称,这样既能满足需求,又能避免多会话下的索引名称冲突问题。
原代码示例
CREATE TABLE [#Test1] ( [ID] INT IDENTITY(1, 1) PRIMARY KEY, [Member_BK] VARCHAR(20), [Company] VARCHAR(20), [Facility_Name] VARCHAR(200), INDEX [IX_#Final_1] ([Member_BK], [Company]) )
修改后的代码(无需指定索引名称)
CREATE TABLE [#Test1] ( [ID] INT IDENTITY(1, 1) PRIMARY KEY, [Member_BK] VARCHAR(20), [Company] VARCHAR(20), [Facility_Name] VARCHAR(200), -- 省略索引名称,由SQL Server自动生成带唯一标识的索引名 INDEX ([Member_BK], [Company]) )
原理说明
当显式指定固定索引名称时,若多个会话同时创建同名临时表,会因索引名称重复触发报错。而让SQL Server自动生成索引名称时,系统会为每个会话的临时表索引生成包含会话唯一标识的名称,确保跨会话的索引名称不冲突,彻底解决你遇到的问题。
另外针对你提到的主键同名问题,你当前的主键写法已经是省略显式名称的模式(PRIMARY KEY后未指定名称),系统会自动生成唯一主键名,无需额外修改。
内容的提问来源于stack exchange,提问作者LCJ
相关产品推荐
相关产品推荐

