2016-09-29 9 views
0

Начиная с версии 7.2 Netezza, по-прежнему нет другого способа изменить ограничение столбца NOT NULL на NULL и обратно, не создавая новую таблицу и не отбрасывая старую таблицу? Кажется, очень жестокий способ изменить ограничение столбцов для очень больших таблиц.Ограничение столбца Netezza alter

ответ

0

Технически, это не единственный способ, как вы можете добавить и переименовать столбцы, так что вы могли бы сделать что-то вроде этого:

TESTDB.ADMIN(ADMIN)=> create table test1 (col1 integer not null); 
CREATE TABLE 
TESTDB.ADMIN(ADMIN)=> alter table test1 add column (col2 integer); 
ALTER TABLE 
TESTDB.ADMIN(ADMIN)=> update test1 set col2=col1; 
UPDATE 0 
TESTDB.ADMIN(ADMIN)=> alter table test1 drop column col1 cascade; 
ALTER TABLE 
TESTDB.ADMIN(ADMIN)=> alter table test1 rename column col2 to col1; 
ALTER TABLE 
TESTDB.ADMIN(ADMIN)=> groom table test1 versions; 
NOTICE: Groom will not purge records deleted by transactions that started after 2016-09-29 12:38:13. 
NOTICE: If this process is interrupted please either repeat GROOM VERSIONS or issue 'GENERATE STATISTICS ON "TEST1"' 
NOTICE: Groom processed 0 pages; purged 0 records; scan size unchanged; table size unchanged. 
GROOM VERSIONS 

Однако, это не какой-либо менее «брутальный» в терминах I/О. Ежедневная жизнь Netezza так часто включает CTAS больших столов. И с этим вы могли бы просто просто решить это, как вам нужно было бы, если бы вы меняли столбец распределения.