У меня есть таблица, в которой отсутствует столбец в ограничении первичного ключа. Вместо того, чтобы редактировать его через SQL Server, я хочу поместить это в сценарий, чтобы добавить его как часть наших сценариев обновления.
Какой синтаксис я могу использовать для этого? Должен ли я отбросить и воссоздать ключевое ограничение?
sql-server
Джейсон
источник
источник
Ответы:
Да. Единственный способ - сбросить ограничение с помощью таблицы Alter, а затем воссоздать его.
источник
alter table PatientsInfo drop constraint PK__Patients__1CBB51380A338187
здесь работаетdb
.table
УДАЛИТЬ ПЕРВИЧНЫЙ КЛЮЧ, ДОБАВИТЬ ПЕРВИЧНЫЙ КЛЮЧ (id1
,id2
);PRIMARY KEY CONSTRAINT
не может быть изменен, вы можете только отбросить его и создать заново. Для больших наборов данных это может привести к длительному времени работы и, следовательно, к недоступности таблицы.источник
С точки зрения производительности нет смысла сохранять некластеризованные индексы во время этого, поскольку они будут повторно обновляться при удалении и создании. Если это большой набор данных, вам следует рассмотреть возможность переименования таблицы (если возможно, какие-либо настройки безопасности в ней?), Воссоздать пустую таблицу с правильными ключами, перенести туда все данные. Вы должны убедиться, что у вас достаточно места для этого.
источник
В моем случае я хочу добавить столбец к первичному ключу (column4). Я использовал этот скрипт, чтобы добавить column4
источник
вы можете переименовать объекты ограничений с помощью sp_rename (как описано в этом ответе )
например:
источник