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]
我有一个 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]