Tem muita coisa errada na sua afirmação.
A_EMP_ID CHAR 5 BYTE
está faltando o(..)
em torno da restrição de comprimento- Você definitivamente não quer usar
CHAR
para oadmin_title
. UseVARCHAR2
em vez disso. DIVERSITY_TRAINING_CERT = 'N','Y'
não é uma expressão válida. Você provavelmente querdiversity_training_cert IN ('N','Y')
- Enquanto
FOREIGN KEY (a_emp_id) REFERENCES admin(a_emp_id)
está sintaticamente correto, não faz sentido. Acho que você quer ummanager_id
ou algo semelhante. E então algo comoFOREIGN KEY (manager_id) REFERENCES admin(a_emp_id)
.
Como alternativa, talvez você queira fazer referência a umemployee
tabela. Nesse caso, oa_emp_id
tipo de dados deve corresponder ao tipo de coluna PK dessa tabela. -
CONSTRAINT ADMIN_END_DATE CHECK (<= 'ADMIN_START_DATE'),
tem três erros:
- uma coluna não deve estar entre aspas simples. Então tem que ser
admin_start_date
não'admin_start_date'
- uma restrição de verificação requer uma condição adequada.
<= admin_start_date
não é uma condição, você precisa comparar a coluna com algo. Presumíveladmin_end_date
- você tem uma vírgula
,
depois dessa expressão que está errada também.
- uma coluna não deve estar entre aspas simples. Então tem que ser
Juntando tudo você obtém:
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)
);
Não relacionado, mas:também não há absolutamente nenhuma necessidade de escrever tudo em maiúsculas.