SQL Server 2008 не может удалить ограничение
Я пытаюсь удалить ограничение первичного ключа из таблицы, используя следующую
ALTER TABLE SchemaName.LabourGrade DROP CONSTRAINT Labour_Grade_pk
и получить ошибку Labour_Grade_pk is not a constraint.
когда я делаю
SELECT * FROM sysobjects WHERE name = 'LabourGrade_pk'
Я получаю один ряд назад. У него есть FK, поэтому я попытался сбросить эти первые, но те же проблемы. Я только хочу удалить PK, чтобы изменить тип данных столбца, есть ли лучший способ сделать это?
2 ответа
Я только хочу удалить PK, чтобы изменить тип данных столбца, есть ли лучший способ сделать это?
Да, вам вообще не нужно удалять и пересоздавать PK (и связанные с ними индексы) для этого. Вы можете сделать это как простое изменение метаданных через ALTER TABLE ... ALTER COLUMN
,
CREATE TABLE #T
(
P VARCHAR(2) PRIMARY KEY
)
INSERT INTO #T VALUES ('AA')
ALTER TABLE #T ALTER COLUMN P VARCHAR(3) NOT NULL
DROP TABLE #T
Если SELECT * FROM sysobjects WHERE name = 'LabourGrade_pk'
возвращает строку, то вы хотите использовать:
ALTER TABLE SchemaName.LabourGrade DROP CONSTRAINT LabourGrade_pk
не
ALTER TABLE SchemaName.LabourGrade DROP CONSTRAINT Labour_Grade_pk
--^-- We don't want this
Но это не объясняет, почему вы должны отменить это ограничение, как в других комментариях и ответе @Martin.