我如何使用SQL语法来更改主键约束?

我有一个表在主键约束中缺less一列。 而不是通过SQL Server进行编辑,我想把它放在脚本中作为我们的更新脚本的一部分添加它。

我可以用什么语法来做到这一点? 我必须删除并重新创build关键约束吗?

是。 唯一的办法是用Alter表删除约束然后重新创build它。

ALTER TABLE <Table_Name> DROP CONSTRAINT <constraint_name> ALTER TABLE <Table_Name> ADD CONSTRAINT <constraint_name> PRIMARY KEY (<Column1>,<Column2>) 

PRIMARY KEY CONSTRAINT不能被修改,你只能删除它并重新创build。 对于大数据集,可能会导致长时间运行,从而导致表不可用。

性能明智的是,在此期间保留非聚集索引是没有意义的,因为它们将在drop和create上重新更新。 如果它是一个大数据集,你应该考虑重新命名表(如果可能的话,它的任何安全设置?),重新创build一个空表和正确的键迁移所有的数据。 你必须确保你有足够的空间。

您可以使用sp_rename重命名约束对象(如本答案中所述 )

例如:

 EXEC sp_rename N'schema.MyIOldConstraint', N'MyNewConstraint'