2016-09-29 1 views
0

A partir de la version 7.2 de Netezza, n'y a-t-il pas encore moyen de changer la contrainte de colonne NOT NULL en NULL et de revenir sans créer une nouvelle table et supprimer l'ancienne? Semble une façon très brutale de modifier la contrainte de colonne pour les très grandes tables.Netezza modifier la contrainte de colonne

Répondre

0

Techniquement, ce n'est pas la seule façon, que vous pouvez ajouter et renommer des colonnes, de sorte que vous pouvez faire quelque chose comme ceci:

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 

Cependant, c'est pas moins « brutale » en termes de I/O. La vie au jour le jour de Netezza implique si souvent CTAS de grandes tables. Et avec cela, vous pourriez simplement résoudre ce problème, comme vous le feriez si vous changiez la colonne de distribution.