Ecco il mio suggerimento:evita CHAR
tipo di dati a meno che non abbia senso (come in genere , come hai fatto tu), nonché VARCHAR
>>> usa VARCHAR2
invece (personalmente, non uso mai CHAR
, e non ho mai usato VARCHAR
).
DATE
datatype contiene sia il componente data che l'ora, quindi sei al sicuro se lo usi.
Le colonne che creano il vincolo della chiave primaria non devono avere il NOT NULL
vincolo specificato, perché le chiavi primarie non consentono comunque valori null.
Quindi, eccolo qui, un esempio funzionante:
SQL> create table appointment
2 (appointid integer constraint pk_app primary key,
3 appoint_date date,
4 appoint_type varchar2(5)
5 );
Table created.
SQL>
SQL> insert into appointment values
2 (1, to_date('15.04.2017 10:00', 'dd.mm.yyyy hh24:mi'), 'long');
1 row created.
SQL>
SQL> create table doctor
2 (appointid integer constraint fk_doc_app references appointment (appointid),
3 regnum varchar2(6),
4 doc_name varchar2(40),
5 doc_gender char(1),
6 qual varchar2(80),
7 --
8 constraint pk_doc primary key (appointid, regnum)
9 );
Table created.
SQL>