1

Netezzaでnull許容でない列をnull許容に変更する方法はありますか?(または、テーブルに新しいnull許容列を作成し、データを転送して、古い列を削除する必要がありますか?)

答えがグーグル検索で表示された場合は申し訳ありませんが、私は探してみましたが、何かを見つけることができませんでした。

4

1 に答える 1

4

NZ 6.0で列を変更するためにできることは、列自体の追加/削除、デフォルト値の設定またはクリア、varcharの長さの変更、および列の名前変更を除いて、ほとんどありません。

おそらく、新しい列を作成し、データを移動し、古い列を削除する必要があります。小さなテーブルの場合、これで問題ありません。

ALTER TABLE t RENAME COLUMN c to c_old; 

ALTER TABLE t ADD COLUMN (c bigint);

UPDATE t set c = c_old;

ALTER TABLE t DROP COLUMN c_old CASCADE;

ただし、テーブルが大きい場合:

netezzaがupdateステートメントを実行する方法のために、まったく新しいテーブルを作成してデータを移動する方がよい場合があります。NZは、更新されたレコードの古いバージョンを削除するために、後で元のテーブルのグルーミングを要求します。

CREATE TABLE t_new ( c bigint ) DISTRIBUTE ON (c);

INSERT INTO t_new SELECT c FROM t;

ALTER TABLE t RENAME to t_old;

ALTER TABLE t_new RENAME to t;

DROP TABLE t_old;
于 2012-10-30T12:37:54.577 に答える