Hier ist mein Vorschlag:Vermeiden Sie CHAR
Datentyp, es sei denn, es ist sinnvoll (z. B. in gender , wie Sie es getan haben), sowie VARCHAR
>>> verwenden Sie VARCHAR2
stattdessen (ich persönlich verwende nie CHAR
, und haben noch nie VARCHAR
verwendet ).
DATE
Der Datentyp enthält sowohl eine Datums- als auch eine Zeitkomponente, sodass Sie sicher sind, wenn Sie ihn verwenden.
Spalten, die den Primärschlüssel einschränken, müssen nicht den NOT NULL
haben Einschränkung angegeben, da Primärschlüssel ohnehin keine Nullen zulassen.
Also, hier ist es, ein funktionierendes Beispiel:
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>