表チェック制約を明示的にドロップするには、ALTER TABLE ステートメントを使います。
また、DROP TABLE ステートメントを使うと、暗黙のうちにチェック制約がドロップされます。
このタスクについて
制約をドロップするには、DROP または DROP CONSTRAINT 節を指定して ALTER TABLE ステートメントを使用してください。これによって変更を反映した列が含まれる表のバインドとアクセスの続行が可能になります。
表上のすべてのユニーク制約の名前は、SYSCAT.INDEXES システム・カタログ・ビューの中にあります。
- ユニーク制約のドロップ
- ALTER TABLE ステートメントを使用して、明示的にユニーク制約をドロップすることができます。
ALTER TABLE ステートメントの DROP UNIQUE 節は、ユニーク制約 constraint-name の定義、およびこのユニーク制約に従属するすべての参照制約をドロップします。
constraint-name には、既存のユニーク制約を指定する必要があります。
ALTER TABLE <table-name>
DROP UNIQUE <constraint-name>
このユニーク制約をドロップすると、
その制約を使用しているすべてのパッケージまたはキャッシュに入った動的 SQL を無効にします。
- 主キー制約のドロップ
- 主キー制約をドロップするには、ALTER TABLE ステートメントの DROP PRIMARY KEY 節を使用します。
ALTER TABLE ステートメントの DROP PRIMARY KEY 節は、主キーの定義、およびその主キーに従属するすべての参照制約をドロップします。表には主キーがなければなりません。コマンド行を使用して主キーをドロップするには、以下のように入力します。
ALTER TABLE <table-name>
DROP PRIMARY KEY
- (表) チェック制約のドロップ
- チェック制約をドロップすると、その表への INSERT または UPDATE 依存関係を持つすべてのパッケージおよびキャッシュに入った動的ステートメントは、無効にされます。
表内のすべてのチェック制約の名前は、SYSCAT.CHECKS カタログ・ビューの中にあります。
システム生成された名前を持つ表チェック制約をドロップする際には、SYSCAT.CHECKS カタログ・ビューで名前を確認してください。
次のステートメントは、チェック制約 constraint-name をドロップするものです。
constraint-name には、表に定義されている既存のチェック制約を指定する必要があります。コマンド行を使用して表チェック制約をドロップするには、以下のようにします。
ALTER TABLE <table_name>
DROP CHECK <check_constraint_name>
または、DROP CONSTRAINT オプションを指定して ALTER TABLE ステートメントを使用することもできます。
- 外部キー (参照) 制約のドロップ
- 外部キー制約をドロップするには、ALTER TABLE ステートメントの DROP CONSTRAINT 節を使用します。
ALTER TABLE ステートメントの DROP CONSTRAINT 節は、制約
constraint-name をドロップします。
constraint-name には、表に定義されている既存の外部キー制約、主キー、またはユニーク制約のいずれかを指定する必要があります。
コマンド行を使用して外部キーをドロップするには、以下のように入力します。
ALTER TABLE <table-name>
DROP FOREIGN KEY <foreign_key_name>
以下の例は、
ALTER TABLE ステートメントの DROP PRIMARY KEY および DROP FOREIGN KEY 節を使用して、
表の主キーと外部キーをドロップします。
ALTER TABLE EMP_ACT
DROP PRIMARY KEY
DROP FOREIGN KEY ACT_EMP_REF
DROP FOREIGN KEY ACT_PROJ_REF
ALTER TABLE PROJECT
DROP PRIMARY KEY
外部キー制約がドロップされると、以下のものを含むパッケージまたはキャッシュに入った動的ステートメントには、無効のマークが付けられる場合があります。
- 外部キーが入っている表の挿入または更新を行うステートメント
- 親表の更新または削除を行うステートメント