В 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);
Теперь я хочу увеличить длину столбца 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 сообщает, что не может воссоздать это ограничение после того, как я его отбросил?
Спасибо!
Evan