SQL主键异常

3

我有一个由大约8个相关表组成的Microsoft Sql Server数据库,我正在尝试更新它。为此,我创建了许多临时表。

"CREATE TABLE [vehicle_data].[dbo].[temp_MAINTENANCE_EVENT] (" +
                       "[maintenance_event_id] int," +
                       "[maintenance_computer_code_id] int," +
                       "[veh_eng_maintenance_id] int," +
                       "CONSTRAINT [PK_maintenance_event_id"] PRIMARY KEY CLUSTERED ([maintenance_event_id] ASC))";

然后,当所有临时表被创建后,我删除现有的表,重命名临时表,并为新表添加外键和索引以加快连接和查询速度。
我的问题是原始主键引用仍然存在。因此,当我再次更新时,会出现“异常:数据库中已经存在一个名为'PK_maintenance_event_id'的对象。无法创建约束。”
我想知道最好的做法是什么?我是否应该在创建临时表时不设置主键,而是在将其重命名后向表中添加主键?或者是否有一种方法可以重命名约束,以便在重命名表时更改主键约束的名称。
在原始表被删除后,我希望停机时间尽可能短,但在表被删除之前发生的任何事情都可能需要很长时间,这并不重要。

你需要保留主键名称吗?如果不需要,那就不要命名,SqlServer会为其生成一个唯一的名称。 - RBarryYoung
我没有看到广告哈哈,但是你知道语法是什么吗? - nastassiar
我认为你只是忘记了名字。 - RBarryYoung
1
哎呀,好的,我找到了。你只需要从当前语法中删除CONSTRAINT [name..]部分即可。 - RBarryYoung
1
@SeanLange 是的,就是那样。 - RBarryYoung
显示剩余4条评论
1个回答

3
如果您的临时表需要该约束
创建时使用
CONSTRAINT [PK_maintenance_event_id_temp"]

替代

CONSTRAINT [PK_maintenance_event_id]

当你将临时表的名称更改为真实表时。
exec sp_rename [PK_maintenance_event_id_temp], [PK_maintenance_event_id]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接