В MSSQL у меня есть таблица, созданная следующим образом:
CREATE TABLE [mytable] (fkid int NOT NULL, data varchar(255) CONSTRAINT DF_mytable_data DEFAULT '' NOT NULL);
ALTER TABLE [mytable] ADD CONSTRAINT PK_mytable_data PRIMARY KEY (fkid, data);
Теперь я хочу увеличить длину столбца данных с 255 до 4000.
Если я просто попробую:
ALTER TABLE [mytable] ALTER COLUMN data varchar(4000);
Затем я получаю эту ошибку:
The object 'PK_mytable_data' is dependent on the column 'data'
Если я попробую это:
ALTER TABLE [mytable] DROP CONSTRAINT PK_mytable_data;
ALTER TABLE [mytable] ALTER COLUMN data varchar(4000);
ALTER TABLE [mytable] ADD CONSTRAINT PK_mytable_data PRIMARY KEY (fkid, data);
Затем я получаю эту ошибку:
Cannot define PRIMARY KEY constraint on nullable column in table 'mytable'
Что мне не хватает? Оба столбца были определены с NOT NULL, поэтому почему MSSQL сообщает, что он не может воссоздать это ограничение после его удаления?
Спасибо! Эван