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.

Другие вопросы по тегам