我有一个表,它的主键约束中缺少一列。我不想通过 SQL Server 对其进行编辑,而是将其放入脚本中以将其添加为我们更新脚本的一部分。
我可以使用什么语法来做到这一点?我必须删除并重新创建键约束吗?
我有一个表,它的主键约束中缺少一列。我不想通过 SQL Server 对其进行编辑,而是将其放入脚本中以将其添加为我们更新脚本的一部分。
我可以使用什么语法来做到这一点?我必须删除并重新创建键约束吗?
是的。唯一的方法是使用 Alter 表删除约束,然后重新创建它。
ALTER TABLE <Table_Name>
DROP CONSTRAINT <constraint_name>
ALTER TABLE <Table_Name>
ADD CONSTRAINT <constraint_name> PRIMARY KEY (<Column1>,<Column2>)
PRIMARY KEY CONSTRAINT
无法更改,您只能将其丢弃并重新创建。对于大型数据集,它可能会导致运行时间过长,从而导致表不可用。
就我而言,我想向主键(第 4 列)添加一列。我使用此脚本添加 column4
ALTER TABLE TableA
DROP CONSTRAINT [PK_TableA]
ALTER TABLE TableA
ADD CONSTRAINT [PK_TableA] PRIMARY KEY (
[column1] ASC,
[column2] ASC,
[column3] ASC,
[column4] ASC
)
在性能方面,没有必要在此期间保留非聚集索引,因为它们将在删除和创建时重新更新。如果它是一个大数据集,您应该考虑重命名该表(如果可能,是否有任何安全设置?),使用正确的键重新创建一个空表,将所有数据迁移到那里。你必须确保你有足够的空间来做这件事。
PRIMARY KEY CONSTRAINT只能删除然后再创建。例如在 MySQL 中:
ALTER TABLE table_name DROP PRIMARY KEY;
ALTER TABLE table_name ADD PRIMARY KEY (Column1,Column2);