Hay mucho mal con su declaración.
A_EMP_ID CHAR 5 BYTE
falta el(..)
alrededor de la restricción de longitud- Definitivamente no desea utilizar
CHAR
para eladmin_title
. UsaVARCHAR2
en su lugar. DIVERSITY_TRAINING_CERT = 'N','Y'
no es una expresión válida. Probablemente deseediversity_training_cert IN ('N','Y')
- Mientras
FOREIGN KEY (a_emp_id) REFERENCES admin(a_emp_id)
es sintácticamente correcto, no tiene sentido. Supongo que quieres unmanager_id
o algo similar. Y luego algo comoFOREIGN KEY (manager_id) REFERENCES admin(a_emp_id)
.
Alternativamente, quizás pretenda hacer referencia a unemployee
mesa. En ese caso, ela_emp_id
el tipo de datos debe coincidir con el tipo de columna PK de esa tabla. -
CONSTRAINT ADMIN_END_DATE CHECK (<= 'ADMIN_START_DATE'),
tiene tres errores:- una columna no debe estar entre comillas simples. Entonces tiene que ser
admin_start_date
no'admin_start_date'
- una restricción de verificación requiere una condición adecuada.
<= admin_start_date
no es una condición, debe comparar la columna con algo. Posibleadmin_end_date
- tienes una coma
,
después de esa expresión que también está mal.
- una columna no debe estar entre comillas simples. Entonces tiene que ser
Juntando todo se obtiene:
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)
);
Sin relación, pero:tampoco hay absolutamente ninguna necesidad de escribir todo en mayúsculas.