2016-07-01 9 views
0

私はテーブルsqlのテーブルに制約を追加するには?

create table CARS{ 
    CAR_ID NUMBER(10), CONSTRAINT X_CAR_ID NOT NULL 
} 

を作成し、今私は、制約の名前を変更したいので、私は制約をドロップ:

ALTER TABLE CARS DROP CONSTRAINT X_CAR_ID; 

これは私が新しい制約を追加しようとしたとき、correclty動作しますが、私はこの問題、 私のクエリている:私は、そのクエリを

ALTER TABLE CARS ADD CONSTRAINT XX_CAR_ID (CAR_ID) NOT NULL; 

考え正しく動作しますが、私は、エラーレポートを取得:

Error report - 
SQL Error: ORA-00904: 

この制約を正しく追加するにはどうすればよいですか?私はそれをテストすることができなかったものの

+0

@jarlhどういう意味ですか? 残念ながら、私はあなたを理解していません。 – Ice

+0

申し訳ありませんが、私はOracleの制約になると失われます。 – jarlh

+1

ANSI SQLの回答: 'ALTER TABLE CARSは、CONSTRAINT XX_CAR_ID CHECK(CAR_IDはNULLではありません)を追加します。 ' – jarlh

答えて

1

私は、以下の文は、あなたが望むものであると信じて:

ALTER TABLE CARS MODIFY CAR_ID CONSTRAINT XX_CAR_ID NOT NULL; 

Oracleは、この文脈でmodifyキーワードを使用しています。

は、あなたが使用する最初の落下せずに名前を変更するには、次の

alter table cars rename constraint x_car_id to xx_car_id; 

は、詳細はreferenceを参照してください。

+0

私は制約の名前を変更したいのですが、あなたのクエリを削除して追加することなく使用できますか?私はあなたを正しく理解していますか? @jpw – Ice

+1

私はそれをチェックする。それは動作します、ありがとう。 – Ice

+0

Oracleマニュアルではカッコを使用する必要があります(ただし、それ以外の場合はうまく機能しません): 'alter table cars modify(car_id constraint xx_car_id not null); ' – mathguy

関連する問題