H2: добавление столбца NOT NULL в таблицу с записями - PullRequest
2 голосов
/ 05 декабря 2011

Я бы хотел добавить столбец NOT NULL в таблицу с именем server. Проблема в том, что таблица уже содержит записи. Когда я вызываю ALTER TABLE server ADD COLUMN full_discovery_duration BIGINT NOT NULL H2 жалуется, что full_discovery_duration не может быть нулевым. Я могу обойти эту проблему, указав DEFAULT 0, но я не хочу значение по умолчанию для будущих вставок. Что я должен делать?

Должен ли я добавить столбец со значением по умолчанию, а затем удалить DEFAULT 0 из определения столбца в последующем утверждении? Есть ли лучший способ?

Ответы [ 2 ]

3 голосов
/ 06 декабря 2011

Вы можете сначала добавить столбец со значением по умолчанию, а затем установить по умолчанию значение NULL.Однако, насколько мне известно, избавиться от определения по умолчанию невозможно.

Альтернативой является сначала разрешить нулевое значение, затем установить значения, а затем и пустые значения.

drop table server;
create table server(id int);
insert into server values(1);
alter table server 
    add column 
    full_discovery_duration bigint;
update server set full_discovery_duration = 0;
alter table server 
    alter column 
    full_discovery_duration set not null;
0 голосов
/ 05 декабря 2011

При добавлении столбцов к существующим таблицам это должен быть либо столбец, допускающий значение NULL, либо должно быть указано значение по умолчанию. А что вы имеете в виду, удаляя настройки по умолчанию? как вы можете удалить значение из ненулевого столбца?

...