Я хотел бы удалить первичный ключ, а затем добавить первичный ключ в тот же столбец в 1 хранимой процедуре.Ограничения на удаление и добавление в одной хранимой процедуре
У меня есть ограничения на падение в пределах Begin Transaction' and
Commit Transaction then try to add the constraints within another set of
Начало транзакции and
Commit Transaction`.
Я получаю сообщение об ошибке, что первичный ключ уже существует для этого столбца, когда он был сброшен в первом наборе транзакций.
Это код:
BEGIN TRANSACTION
ALTER TABLE [dbo].[Lens] DROP CONSTRAINT [FK_Lens_Style];
ALTER TABLE [dbo].[Lens] DROP CONSTRAINT [FK_Lens_Type];
ALTER TABLE [dbo].[Coating] DROP CONSTRAINT [PK_Coatings];
ALTER TABLE [dbo].[CoatingCost] DROP CONSTRAINT [PK_CoatingCost];
COMMIT TRANSACTION
BEGIN TRANSACTION
ALTER TABLE [dbo].[Coating]
ADD CONSTRAINT [PK_dbo.Coating]
PRIMARY KEY CLUSTERED ([CoatingId] ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
COMMIT TRANSACTION
Если первый набор ограничений отбрасываются и совершенные, я не должен быть в состоянии добавить первичный ключ столбца, который ранее имел первичный ключ?
ОБНОВЛЕНИЕ Я думаю, что знаю проблему. Это связано с тем, что есть внешний ключ, связанный с первичным ключом, который я пытаюсь удалить.
Мне нужно будет удалить все внешние ключи, связанные со всеми основными ключами, которые я пытаюсь сбросить. Затем добавьте первичные ключи назад. Затем добавьте внешние ключи.
попытаться 'DISABLE' и' ENABLE' вместо '' DROP' и ADD' – techspider
я должен упасть ограничение, потому что его необходимо переименовать или удалить навсегда. –
Это не сработает. Для этого в одной процедуре потребуется переместить код в динамический sql. Это связано с тем, что компилятор вызовет исключение, поскольку в таблице уже есть первичный ключ. Он не выполняет вашу логику, чтобы определить, что первичный ключ уже отброшен. Я бы поставил под вопрос, почему вам нужна хранимая процедура для этого. Вы действительно бросаете и воссоздаете первичные ключи так часто, что вам нужна процедура? –