【问题标题】:Netezza alter column constraintNetezza 更改列约束
【发布时间】:2016-09-29 15:54:18
【问题描述】:

从 Netezza 7.2 版开始,是否仍然没有其他方法可以将列约束 NOT NULL 更改为 NULL 并再次返回,而无需创建新表并删除旧表?更改非常大的表的列约束似乎是一种非常残酷的方法。

【问题讨论】:

    标签: sql constraints netezza alter-table


    【解决方案1】:

    从技术上讲,这不是唯一的方法,因为您可以添加和重命名列,因此您可以执行以下操作:

    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/O 而言,这同样“残酷”。 Netezza 的日常工作经常涉及大表的 CTAS。有了它,您可以更简单地解决这个问题,就像您在更改分布列时必须做的那样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-24
      • 2011-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多