SQL 主键异常

标签 sql sql-server sql-server-2012-express

我有一个由大约 8 个表组成的 Mircrosoft 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))";

然后在创建所有临时表后,我删除现有表,重命名临时表,并向新表添加外键和索引以加快连接和查询速度。

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

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

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

删除原始表后,我希望停机时间尽可能短,但在删除表之前发生的任何事情都可能需要很长时间,这无关紧要。

最佳答案

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

创建时 使用

CONSTRAINT [PK_maintenance_event_id_temp"]

代替

CONSTRAINT [PK_maintenance_event_id]

当你将 temp 重命名回真实表时

exec sp_rename [PK_maintenance_event_id_temp], [PK_maintenance_event_id]

关于SQL 主键异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30129644/

相关文章:

MYSQL SQL语句。这个条件查询可能吗?

sql - GROUP BY 同一列中的多个值

sql - 从 SQL Server 2012 导出到 PostgreSQL 的问题

java.sql.SQLException : invalid column index

sql - Postgres 数据转换为 XML 格式

php - 如何以特定顺序多次显示mysql记录

sql-server - 将多个数据从excel加载到sql SSIS

sql-server - 为什么我无法连接到 SQL Server 2012 LocalDB 共享实例?

c# - 无法浏览所有表格