Как я могу изменить ограничение первичного ключа с помощью синтаксиса SQL?
У меня есть таблица, в которой отсутствует столбец в первичный ключ ограничений. Вместо того, чтобы редактировать его через SQL Server, я хочу поместить это в сценарий, чтобы добавить его как часть наших сценариев обновления.
какой синтаксис я могу использовать для этого? Должен ли я удалить и воссоздать ограничение ключа?
4 ответа:
да. Единственный способ-удалить ограничение с помощью таблицы Alter, а затем воссоздать его.
ALTER TABLE <Table_Name> DROP CONSTRAINT <constraint_name> ALTER TABLE <Table_Name> ADD CONSTRAINT <constraint_name> PRIMARY KEY (<Column1>,<Column2>)
PRIMARY KEY CONSTRAINT
не может быть изменен, вы можете только отбросить его и создать снова. Для больших наборов данных это может привести к длительному времени выполнения и, следовательно, к недоступности таблицы.
производительность мудрый нет смысла держать некластеризованные индексы во время этого, как они будут повторно обновлены на падение и создать. Если это большой набор данных, вы должны рассмотреть вопрос о переименовании таблицы (если это возможно , любые настройки безопасности на нем?), воссоздание пустой таблицы с правильными ключами переносит все данные туда. Вы должны убедиться, что у вас достаточно места для этого.
вы можете переименовать объекты ограничений с помощью процедуры sp_rename (как описано в ответ)
например:
EXEC sp_rename N'schema.MyIOldConstraint', N'MyNewConstraint'