1

私はオラクルクエリを持っています-

occupation varchar2(50) CHECK(occupation IN ('student','govt_service','private','business')));

今、私はチェック制約を削除する必要があるので、次のクエリを使用します-

ALTER TABLE registration drop constraint occupation;

しかし、制約名を定義していないので、無効な制約名と表示されます。制約を削除する方法はありますか?テーブルを変更して制約の名前を追加してから削除できると思いますが、他の方法はありますか?

4

2 に答える 2

1

次のクエリを実行します。

select * from all_constraints where table_name = 'REGISTRATION';

そして、制約名が見つかります。

編集:Occupationsテーブルを作成し、現在の制約を外部キーに置き換えることもお勧めします。(すでにこれを実行したい場合は、お詫び申し上げます)。さらに、正規化すると、職業には ID があり、外国人はこれらの ID で定義する必要があります。

于 2012-11-22T06:26:28.193 に答える
0

USER_CONSTRAINTSテーブルにCONSTRAINT_NAMEを照会してみてください。これにより、作成した制約のシステム名が生成されている必要があります。

select * from USER_CONSTRAINTS
where owner='<your_schema>' and CONSTRAINT_TYPE='C';
于 2012-11-22T06:27:52.827 に答える