Netezzaでnull許容でない列をnull許容に変更する方法はありますか?(または、テーブルに新しいnull許容列を作成し、データを転送して、古い列を削除する必要がありますか?)
答えがグーグル検索で表示された場合は申し訳ありませんが、私は探してみましたが、何かを見つけることができませんでした。
Netezzaでnull許容でない列をnull許容に変更する方法はありますか?(または、テーブルに新しいnull許容列を作成し、データを転送して、古い列を削除する必要がありますか?)
答えがグーグル検索で表示された場合は申し訳ありませんが、私は探してみましたが、何かを見つけることができませんでした。
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;