SQL 主键异常

SQL Primary Key Exception

我有一个 Mircrosoft Sql 服务器数据库,由大约 8 个 table 组成,我正在尝试更新它们。为此,我创建了一些临时 tables

"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))";

然后在创建所有临时 tables 之后,我删除现有的 tables,重命名临时 tables,并将外键和索引添加到新的 tables 来加速连接和查询。

我遇到的问题是原始主键引用仍然存在。所以当我再次更新时,我得到

Exception: There is already an object named 'PK_maintenance_event_id' in the database. Could not create constraint.

我想知道最好的行动方案是什么?我是否应该在创建临时 table 时不设置主键,而是在重命名后将其添加到 table ?或者有没有办法重命名约束,以便在我重命名 table 时可以更改主键约束的名称。

在删除原始 table 之后,我希望停机时间尽可能短,但是在删除 table 之前发生的任何事情都可能需要很长时间并且没关系。

如果您的临时 table 需要该约束

创建时 使用

CONSTRAINT [PK_maintenance_event_id_temp"]

而不是

CONSTRAINT [PK_maintenance_event_id]

当您将 temp 重命名回 real 时 table

exec sp_rename [PK_maintenance_event_id_temp], [PK_maintenance_event_id]