Oracle でテーブルを作成する場合CREATE TABLE
、少なくとも 4 つの方法で制約を指定できます。
インライン仕様
CREATE TABLE animals
(
animal_id NUMBER(6) PRIMARY KEY,
name VARCHAR2(25),
license_tag_number NUMBER(10) UNIQUE,
admit_date DATE NOT NULL,
adoption_id NUMBER(5),
vaccination_date DATE NOT NULL
);
明示的な制約の名前によるインライン指定
CREATE TABLE animals
(
animal_id NUMBER(6) CONSTRAINT animal_id_pk PRIMARY KEY,
name VARCHAR2(25),
license_tag_number NUMBER(10) CONSTRAINT animal_tag_no_uq UNIQUE,
admit_date DATE NOT NULL,
adoption_id NUMBER(5),
vaccination_date DATE NOT NULL
);
概略仕様
CREATE TABLE animals
(
animal_id NUMBER(6) ,
name VARCHAR2(25),
license_tag_number NUMBER(10),
admit_date DATE NOT NULL,
adoption_id NUMBER(5),
vaccination_date DATE NOT NULL,
PRIMARY KEY (animal_id),
UNIQUE (license_tag_number)
);
明示的な制約の名前による概略仕様
CREATE TABLE animals
(
animal_id NUMBER(6) ,
name VARCHAR2(25),
license_tag_number NUMBER(10),
admit_date DATE NOT NULL,
adoption_id NUMBER(5),
vaccination_date DATE NOT NULL,
CONSTRAINT animal_id_pk PRIMARY KEY (animal_id),
CONSTRAINT animal_tag_no_uq UNIQUE (license_tag_number)
);
制約名を明示的に指定しない場合、それらはシステムによって自動的に生成され、SYS_C0013321
. 最後の方法が最も読みやすいと思います。なぜなら、どの制約が作成されたかを確認でき、わかりやすい名前を使用して (たとえば、 view を使用してuser_constraints
) それらを管理できるからです。
ところで、あなたのコードにはタイプミスがあります:PRIMARY KEY
の代わりに を使用する必要がありPRIMARY_KEY
ます。