В Oracle нет типа данных TIME
(для столбца appointmenttime
). DATE
тип данных содержит дату и время, например,
SQL> alter session set nls_date_format = 'dd.mm.yyyy hh24:mi:ss';
Session altered.
SQL> select sysdate from dual;
SYSDATE
-------------------
28.03.2020 20:44:59
Это означает, что appointmentdate DATE
подойдет.
Кроме этого, все в порядке:
SQL> CREATE TABLE STAFFS (STAFF_NUM VARCHAR(30) PRIMARY KEY);
Table created.
SQL> CREATE TABLE PATIENT (PATIENT_NUM VARCHAR(30) PRIMARY KEY);
Table created.
SQL> CREATE TABLE LOCALDOCTORS (PROVIDER_NUM VARCHAR(30) PRIMARY KEY);
Table created.
SQL> CREATE TABLE PATIENTAPPOINTMENT(
2 APPOINTMENT_NUM VARCHAR (30) PRIMARY KEY,
3 STAFF_NUM VARCHAR (30) NOT NULL,
4 PATIENT_NUM VARCHAR (30) NOT NULL,
5 PROVIDER_NUM VARCHAR (30) NOT NULL,
6 APPOINTMENTDATE DATE NOT NULL,
7 --APPOINTMENTTIME TIME NOT NULL, --> wrong
8 EXAMROOMNUM VARCHAR (30) NOT NULL,
9 CONSTRAINT STAFFS_FK FOREIGN KEY(STAFF_NUM) REFERENCES STAFFS (STAFF_NUM),
10 CONSTRAINT PATIENT_FK FOREIGN KEY (PATIENT_NUM) REFERENCES PATIENT (PATIENT_NUM),
11 CONSTRAINT LOCAL_DOCTORS_FK FOREIGN KEY (PROVIDER_NUM) REFERENCES LOCALDOCTORS (PROVIDER_NUM));
Table created.
SQL>
за исключением за то, что вы должны использовать varchar2
, а не varchar
. Почему? Потому что Oracle рекомендует так.