SO、データベース管理者 (Stack Exhcange)、Teradata Developer Exchange など、Teradata のオンライン リソースがあります。それらはおそらくあなたの最良の情報源です。
Teradata SQL Data Definition Language - Teradata 13.10 の詳細トピック マニュアルの43 ページには、次のように記載されています。
ID 列を既存の実表に追加することも、ID 列属性を既存の列に追加することもできません。
面倒に思えるかもしれませんが、このアプローチは非常にうまく機能し、エンド ユーザーのデータのダウン タイムを最小限に抑えます。これはうまく機能し、数十億行のテーブルに対してデータ モデルを変更するときに使用する推奨される方法です。Teradata オプティマイザーは、行単位ではなくデータ ブロック レベルの MERGE 操作を選択する必要があるため、新しいテーブルへのデータの挿入はかなり最適化されている必要があります。
- ID 列を含む新しいテーブルを作成する
- 元のテーブルに対するターゲット テーブルの変更が保持されていることを確認します。
- 古いテーブルから選択したデータを新しいテーブルに挿入します。
- {orig_table} の名前を {orig_table}_old に変更します。
- {new_table} の名前を {orig_table} に変更します。
- 新しいテーブルのデータを検証し、{orig_table}_old を削除します
- ID 列を導入するために 1:1 ビューのビュー定義を更新します。(オプション)
お役に立てれば。
許容されるインプレース変更の範囲外にある列のデータ型を拡張する必要がある場合に試すことができる別の解決策。(例: DECIMAL(3,0) -> DECIMAL(5,0)):
ALTER TABLE {MyTable} ADD {Orig_ColumnName}_New DECIMAL(5,0) NULL;
UPDATE {MyTable} SET {Orig_ColumnName}_New = {Orig_Column};
ALTER TABLE {MyTable} DROP {Orig_ColumnName};
ALTER TABLE {MyTable} RENAME {Orig_ColumnName}_New AS {Orig_ColumnName};
ALTER TABLE {MyTable} ADD {Orig_ColumnName} NOT NULL; /* If original column was NOT NULL */
列のデータ型を拡張するための境界を説明するルールは、Teradata DDL マニュアルに記載されています。