テーブルからの列の削除 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ定義言語 詳細トピック

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
17.00
Published
2020年6月
ft:locale
ja-JP
ft:lastEdition
2021-03-30
dita:mapPath
ja-JP/jpx1556733107962.ditamap
dita:ditavalPath
ja-JP/jpx1556733107962.ditaval
dita:id
B035-1184
Product Category
Software
Teradata Vantage
テーブルから列を削除する操作に関するルールと制約事項を以下にまとめます。
  • テーブルからすべての列を削除できます。
  • 列を削除すると、テーブルの各行でその削除列に対応するフィールドがデータベースによって削除されます。
  • インデックス付きの列をテーブルから削除するには、まずそれらの列のインデックスを削除する必要があります。

    インデックス付きの列をテーブルから削除するための一連の手順を以下にまとめます。

列を削除するインデックスの種類 手順
基本:テーブルに行が存在しない
  1. ALTER TABLE文のプライマリ インデックスまたは基本AMPインデックスの変更構文を使用して、テーブル定義を変更し、新しいプライマリ インデックスまたは基本AMPインデックスを作成します。
  2. ALTER TABLE table_name DROP column_nameを使用して、以前のプライマリ インデックスまたは基本AMPインデックスだった列セットを削除します。
基本: CREATE TABLE AS文を使用する
  1. CREATE TABLE AS構文を使用して、異なるプライマリ インデックスまたは基本AMPインデックスで新たに定義したテーブルに、テーブルをコピーします。
  2. 元のテーブルを削除します。
  3. 新しいテーブルの名前を変更します。
基本:従来の方法
  1. 正しいプライマリ インデックスまたは基本AMPインデックス付きの新しいテーブルを作成します。
  2. データを新しいテーブルにコピーします。

    INSERT … SELECTリクエストを使用すると、簡単にコピーできます。<Teradata Vantage™ - SQLデータ操作言語、B035-1146>の「INSERT … SELECT」を参照してください。

  3. 元のテーブルを削除します。
  4. 新しいテーブルの名前を変更します。
  • 副次
  • ハッシュ
  • 結合
  1. インデックスを削除します。
  2. そのインデックスの列を削除します。
  3. 正しい列に新しいインデックスを定義します。
  • 行パーティション テーブルのパーティション列を削除するには、まずパーティションを変更して、その列をパーティション セットから除外しなければなりません。そのようにすると、データベースはエラーを返します。

    プライマリ インデックス、基本AMPインデックス、セカンダリ インデックス、ハッシュ インデックス、結合インデックスが定義されている列を削除することはできません。

  • トリガーのUPDATE OF句で参照されている列を削除することはできません。
  • 既存のテーブルの識別列を削除することは可能です。
  • 既存のテーブルの識別列から識別列の属性だけを削除し、その列とデータを残すこともできます。
  • LOB列は制約なしで実テーブルから削除できます。テーブルからすべてのLOB列を削除すると、そのテーブルはLOB制約に縛られなくなります。ラージ オブジェクト データ型に関するルールと制約事項を参照してください。
  • キュー テーブルからQITS列を削除することはできません。