6. AND 7. OR
4.3 SQL コマンドのアルファベット順のリスト コマンドのアルファベット順のリスト コマンドのアルファベット順のリスト コマンドのアルファベット順のリスト
4.3.3 ALTER TABLE
構文構文構文 構文 図 図図
図 4-3 ALTER TABLEコマンドコマンドコマンドコマンド
BNF表記法表記法表記法表記法
ALTER TABLE [schema .] table {
ADD add_column_list |ADD table_constraint |DROP drop_clause
SQLコマンドのアルファベット順のリスト
|MODIFY CONSTRAINT constraint_name constraint_state }
;
add_column_list::=
図 図図
図 4-4 add_column_list式式式式
BNF表記法表記法表記法表記法
[COLUMN] "("column datatype [DEFAULT expr] [column_constraint]
[, column_constraint]...")" [, [COLUMN] "("column datatype [DEFAULT expr]
[column_constraint] [, column_constraint]...")"]...
modify_column_option::=
図図図
図 4-5 modify_column_option式式式式
BNF表記法表記法表記法表記法
column [datatype] [DEFAULT { literal | USER | SYSDATE }] [ NULL | NOT NULL ] [, column [ [datatype] [DEFAULT { literal | USER | SYSDATE }]
[ NULL | NOT NULL ] ] ]...
SQLコマンドのアルファベット順のリスト
constraint_state::=
図 図図
図 4-6 constraint_state式式式式
BNF表記法表記法表記法表記法
([ENABLE | DISABLE] [VALIDATE | NOVALIDATE]) 用途
用途用途 用途
次の方法のいずれかを使用して、表の定義を変更します。
■ 列または整合性制約を追加する
■ 列または整合性制約を削除する
■ Javaクラスを連結する
■ Javaクラスを連結解除する
■ 列のデフォルト値を追加または変更する
■ 列のデータ型またはサイズを変更する
■ 制約を無効化または有効化する
■ 列がNULLかどうかのプロパティを変更する
前提条件前提条件前提条件 前提条件
表が、ユーザーのスキーマ内に必要です。データベースにはSYSTEM、またはDBA/DDL 権限を持つユーザーとしてログインする必要があります。
表表表
表 4-3 ALTER TABLEコマンドで使用される引数コマンドで使用される引数コマンドで使用される引数コマンドで使用される引数 引数
引数引数
引数 説明説明説明説明
schema スキーマの名前で、最大128文字の文字列。各ユーザー名は、同
じ名前のデフォルトのスキーマが付いているため、スキーマ名は、
どのユーザー名とも異なる必要があります。ユーザー名と同じ名
SQLコマンドのアルファベット順のリスト
DROP 列または整合性制約がデータベースの表から削除されるように指 定します。
column データベースの列の名前。
datatype データベースの列のデータ型。
DEFAULT 新規列に、新しいデフォルト値expr (式)を指定します。次のい
ずれかになります。
■ DEFAULT NULL、DEFAULT USER(表が作成された際の ユーザー名)、DEFAULTリテラル
■ ODBC FUNCTIONS - TIMESTAMPADD、
TIMESTAMPDIFF、DATABASE、USER
■ SQL FUNCTIONS - CURRENT_DATE、CURRENT_TIME、 CURRENT_TIMESTAMP、SYSDATE
式の詳細は、「式の指定」を参照してください。
expr 有効な式。式が評価されるのはALTER TABLEが実行されるとき
で、行にデフォルト値が挿入されるときではありません。詳細は、
「式の指定」を参照してください。
column_constraint 列整合性制約。詳細は、「CONSTRAINT句」を参照してくださ
い。NOT NULL制約を持つ列を、すでにデータを含んでいる表に 追加できません。
table_constraint 表整合性制約。詳細は、「CONSTRAINT句」を参照してくださ
い。
drop_clause 削除される整合性制約。詳細は、「DROP句」を参照してくださ
い。
ATTACH JAVA Javaクラスまたはソース・ファイルをデータベースの表に連結し
ます。
IN Javaクラスまたはソース・ファイルを、データベース内、Javaク ラスまたはソース・パスに連結する必要があることを示します。
DATABASE Javaクラスまたはソース・パスを連結するデータベース。
DETACH Javaクラスをデータベースの表から削除します。
CLASS Javaクラスを指定します。
SOURCE Javaソース・ファイルを指定します。
cls_or_src_name 完全修飾Javaクラス名またはソース・ファイル名。
表 表表
表 4-3 ALTER TABLEコマンドで使用される引数コマンドで使用される引数コマンドで使用される引数コマンドで使用される引数(続き)(続き)(続き)(続き)
引数 引数引数
引数 説明説明説明説明
SQLコマンドのアルファベット順のリスト
cls_or_src_path 指定されたJavaクラスまたはソース・ファイルを含むディレクト
リ。
WITH CONSTRUCTOR
ARGS Javaコンストラクタの引数として使用されるクラスの属性を指定 します。
col_name_list データベースの表内の列(属性)のリスト。
AND DELETE Javaクラスをデータベースから削除します。
class_name 完全修飾Javaクラス名。
ENABLE ALL TRIGGERS 表に対応付けられたトリガーをすべて有効にします。トリガーは、
トリガー条件が満たされたときに起動されます。単一のトリガー を有効にするには、ALTER TRIGGERのENABLE句を使用しま す。「ALTER TRIGGER」を参照してください。
DISABLE ALL TRIGGERS 表に対応付けられたトリガーをすべて無効にします。無効にされ たトリガーは、トリガー条件が満たされても起動されません。単 一のトリガーを無効にするには、ALTER TRIGGERのDISABLE 句を使用します。「ALTER TRIGGER」を参照してください。
MODIFY 既存の列に新しいデフォルトを指定します。後続のINSERT文が
列の値を省略した場合、Oracle Liteがその列にこの値を割り当て ます。デフォルト値のデータ型は、列に指定されたデータ型に一 致する必要があります。また、列にはデフォルト値を保持するた めの十分な長さが必要です。
modify_column_option 既存の列の定義を変更します。データ型、デフォルト値(リテラ ル、USERまたはSYSDATE)または列制約状態(NULL、NOT NULL)など、省略された列定義のオプション部分は変更されま せん。既存のデータが、データ変換によりエラーを発生しないよ うなものであれば、既存のデータを新しいデータ型に変更できま す。既存のサイズが15文字以上のVARCHAR列のサイズを増加 した場合、データ変換は必要ありません。それ以外の変更はすべ てデータ変換が必要です。各列は個別に変換されます。データ型 を変更すると、そのつどすべてのオブジェクトが再書込みされ、
依存するすべての索引が作成されます。
KEY COLUMNS句を使用して作成された索引の列のデータ型を 変更すると、索引の再作成でKEY COLUMNSオプションの再設 定が不可能なためにALTER TABLE MODIFYコマンドが失敗する 表表表
表 4-3 ALTER TABLEコマンドで使用される引数コマンドで使用される引数コマンドで使用される引数コマンドで使用される引数(続き)(続き)(続き)(続き)
引数 引数引数
引数 説明説明説明説明
SQLコマンドのアルファベット順のリスト
使用上の注意 使用上の注意使用上の注意 使用上の注意
表に新規列を追加するのにADD句を使用すると、新規列の各行の初期値はNULLとなりま す。表が空であるかどうかにかかわらず、デフォルト値が指定されている場合にかぎり、
NOT NULL制約を持つ列を追加できます。
VALIDATEやNOVALIDATEがENABLE引数から省略された場合、デフォルトは
NOVALIDATEです。
VALIDATEやNOVALIDATEがDISABLE引数から省略された場合、デフォルトは
NOVALIDATEです。
ENABLE VALIDATE この設定では、既存のデータがすべて制約上準拠することを指定
します。制約検証を有効にすると、それ以降すべてのデータの有 効性が保証されます。主キー制約をENABLE VALIDATEモード で設定すると、検証処理により主キー列にNULLが含まれないよ うに保証されます。
VALIDATEやNOVALIDATEが省略された場合、デフォルトは VALIDATEです。
ENABLE NOVALIDATE この設定により、制約付きデータに対するすべての新規DML操 作が制約に準拠することが保証されますが、表内の既存のデータ が制約に準拠することは保証されません。
主キー制約を有効にすると自動的に1次索引が作成され、制約が 施行されます。主キー制約が無効にされた場合、この索引は通常 の索引に変換されます。制約が再度有効になると、主キー制約に 対して索引がチェックされ、違反が検出されない場合は主キー状 態にリストアされます。
DISABLE VALIDATE この設定は制約を無効にして、主キー制約の索引を通常の索引に
変換しますが、制約は有効なまま保持します。SQLRTエンジンを 介して表にDML文を実行できませんが、Oracle Lite Javaアクセ ス・クラス(JAC)を介するとDML文を実行できます。
VALIDATEやNOVALIDATEが省略された場合、デフォルトは NOVALIDATEです。
DISABLE NOVALIDATE この設定では、Oracle Liteは制約をメンテナンスせず(無効にさ れているため)、また制約がTRUEであることを保証できません
(検証されていないため)。主キー制約索引は通常の索引にダウン グレードされます。
外部キー制約がDISABLE NOVALIDATE状態でも、主キーが外 部キーにより参照されている表は削除できません。
表 表表
表 4-3 ALTER TABLEコマンドで使用される引数コマンドで使用される引数コマンドで使用される引数コマンドで使用される引数(続き)(続き)(続き)(続き)
引数 引数引数
引数 説明説明説明説明
SQLコマンドのアルファベット順のリスト
NULLかどうかの制約が、MODIFY句を整合性制約構文付きで使用して既存の列に追加で きる唯一の整合性制約です。NOT NULLは、列にNULLが含まれていない場合のみ追加で きます。NULL制約は、主キー制約の構成要素でない列に対して追加できます。
例 例例 例
次の文は、列THRIFTPLANとLOANCODEをEMP表に追加します。THRIFTPLANは、
最大7桁、小数点以下2桁の、データ型NUMBERを持ちます。LOANCODEは、サイズ1、
NOT NULL整合性制約の、データ型CHARを持ちます。
ALTER TABLE emp
ADD (thriftplan NUMBER(7,2), loancode CHAR(1));
関連項目 関連項目関連項目 関連項目
CONSTRAINT句、CREATE TABLE、CREATE VIEW