あなたの発言には多くの間違いがあります。
-
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)
);
無関係ですが、すべてを大文字で書く必要もまったくありません。