2016-09-29 5 views
0

Ab Netezza Version 7.2 gibt es noch keine andere Möglichkeit, die Spaltenbedingung NOT NULL in NULL und wieder zurück zu ändern, ohne eine neue Tabelle zu erstellen und die alte zu löschen? Es scheint eine sehr brutale Methode zu sein, die Spaltenbeschränkung für sehr große Tabellen zu ändern.Netezza alter column constraint

Antwort

0

Technisch gesehen, das ist nicht die einzige Art und Weise, wie Sie Spalten hinzufügen und benennen können, so könnten Sie so etwas tun:

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 

Allerdings, das ist nicht weniger „brutal“ in Bezug auf die I/O. Das tägliche Netezza-Leben betrifft oft CTAS von großen Tischen. Und damit könnten Sie das Problem einfach lösen, wie Sie es tun müssten, wenn Sie die Verteilungsspalte ändern würden.