这是我在Oracle中创建的最后一个表,但是我不确定该表的错误在哪里。
CREATE TABLE PATIENTAPPOINTMENT(
APPOINTMENT_NUM VARCHAR (30) PRIMARY KEY,
STAFF_NUM VARCHAR (30) NOT NULL,
PATIENT_NUM VARCHAR (30) NOT NULL,
PROVIDER_NUM VARCHAR (30) NOT NULL,
APPOINTMENTDATE DATE NOT NULL,
APPOINTMENTTIME TIME NOT NULL,
EXAMROOMNUM VARCHAR (30) NOT NULL,
CONSTRAINT STAFFS_FK FOREIGN KEY(STAFF_NUM) REFERENCES STAFFS (STAFF_NUM),
CONSTRAINT PATIENT_FK FOREIGN KEY (PATIENT_NUM) REFERENCES PATIENT (PATIENT_NUM),
CONSTRAINT LOCAL_DOCTORS_FK FOREIGN KEY (PROVIDER_NUM) REFERENCES LOCALDOCTORS (PROVIDER_NUM));
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>
except,因为您应该使用varchar2
,而不是varchar
。为什么?因为Oracle建议这样做。
TIME不是数据类型,请使用DATE。
Oracle中支持VARCHAR,但不建议使用VARCHAR2。