あなたの発言には多くの間違いがあります。
-
A_EMP_ID CHAR 5 BYTE(..)がありません 長さの制約の周り -
CHARを使用したくないことは間違いありません。admin_titleの場合 。VARCHAR2を使用します 代わりに。 -
DIVERSITY_TRAINING_CERT = 'N','Y'は有効な式ではありません。おそらくdiversity_training_cert IN ('N','Y')が必要です -
FOREIGN KEY (a_emp_id) REFERENCES admin(a_emp_id)構文的に正しいので、意味がありません。manager_idが必要だと思います または同様のもの。そして、FOREIGN KEY (manager_id) REFERENCES admin(a_emp_id)のようなもの 。
または、employeeを参照することを意図している場合もあります。 テーブル。その場合、a_emp_idデータ型は、そのテーブルのPK列の型と一致する必要があります。 -
CONSTRAINT ADMIN_END_DATE CHECK (<= 'ADMIN_START_DATE'),3つのエラーがあります:- 列を一重引用符で囲むことはできません。したがって、
admin_start_dateである必要があります'admin_start_date'ではありません - チェック制約には適切な条件が必要です。
<= admin_start_dateは条件ではありません。列を何かと比較する必要があります。推定されるadmin_end_date - コンマがあります
,その表現の後も間違っています。
- 列を一重引用符で囲むことはできません。したがって、
すべてをまとめると、次のようになります。
CREATE TABLE admin
(
a_emp_id CHAR(5 BYTE) NOT NULL,
admin_start_date DATE DEFAULT SYSDATE NOT NULL,
admin_end_date DATE NULL,
diversity_training_cert CHAR(1 BYTE) DEFAULT 'N' NOT NULL,
admin_title VARCHAR2(40 BYTE) NULL,
CONSTRAINT admin_pk
PRIMARY KEY(a_emp_id),
CONSTRAINT admin_fk1
FOREIGN KEY (a_emp_id) REFERENCES admin(a_emp_id),
CONSTRAINT admin_diversity_cert
CHECK (diversity_training_cert IN ('N','Y')),
CONSTRAINT admin_end_date
CHECK ( admin_end_date <= admin_start_date)
);
無関係ですが、すべてを大文字で書く必要もまったくありません。