2016-11-07 1 views
-1

다음은 내가 만들려고하는 테이블입니다. 나는 여기에서 실수를 전혀 발견 할 수 없다.Oracle SQL : 특정 제약 조건이있는 테이블을 만들려고 시도했지만 레코드를 추가 할 수 없습니다. 어디가 잘못 됐어?

CREATE TABLE Pharmaceutical (
PharName  VARCHAR(30), 
PharTelephone VARCHAR(25), 
PRIMARY KEY (PharName) 
); 

CREATE TABLE Doctor (
DID  VARCHAR2(20), 
DName  VARCHAR2(50), 
Specialty VARCHAR2(70), 
YearOfExp NUMBER, 
PRIMARY KEY (DID) 
); 

CREATE TABLE Patient (
PID  VARCHAR2(20), 
PName  VARCHAR2(50), 
PDOB  DATE, 
PAddress VARCHAR2(70), 
PPostalCode VARCHAR2(12), 
FamilyDoctor VARCHAR2(20), 
PRIMARY KEY (PID), 
FOREIGN KEY (FamilyDoctor) REFERENCES Doctor(DID) 
); 

CREATE TABLE Drug (
PharName VARCHAR2(30), 
Tradename VARCHAR2(30), 
Formula  VARCHAR2(70), 
PRIMARY KEY (PharName, Tradename), 
FOREIGN KEY (PharName) REFERENCES Pharmaceutical(PharName) 
); 

CREATE TABLE Prescription (
DID  VARCHAR2(20), 
PID  VARCHAR2(20), 
PharName VARCHAR2(30), 
Tradename VARCHAR2(30), 
PrescriptionDT DATE, 
Quantity NUMBER, 
CONSTRAINT checkQuantity CHECK (Quantity>0 AND Quantity<31), 

PRIMARY KEY (DID, PID, PharName, Tradename, PrescriptionDT), 
FOREIGN KEY (DID) REFERENCES Doctor(DID), 
FOREIGN KEY (PID) REFERENCES Patient(PID), 
FOREIGN KEY (PharName, Tradename) REFERENCES Drug(PharName, Tradename), 
); 
나는 또한 drop.sql를 사용

은 테이블을 삭제합니다 :

DROP TABLE Pharmaceutical PURGE; 
DROP TABLE Doctor PURGE; 
DROP TABLE Patient PURGE; 
DROP TABLE Drug PURGE; 
DROP TABLE Prescription PURGE; 

당신을 감사합니다!

P. -> add contraint 부분에서 'add'를 제거했습니다. 이것은 내가 얻는 오류입니다 :

SP2-0734 : 알 수없는 명령으로 시작하는 "PRIMARY KEY ..."- 나머지 라인은 무시됩니다. 마지막 테이블의 기본 키와이 키의 외래 키에 대해이 오류가 발생하므로 문제가 제한 사항이라고 가정되지만 잘못된 것일 수 있습니다. 테이블 Prescription의 정의에서

+0

@NewbeeDev - 진술이 완전히 잘못되었습니다. 기본 키는 하나만 가질 수 있지만 기본 키는 여러 필드로 구성 될 수 있습니다. 감사. –

+0

oracle을 사용하는 경우 PRIMARY KEY 및/또는 FOREIGN KEY보다 먼저 'CONSTRAINT'를 써야합니다. –

답변

0

는 종료 ); 전에 마지막 줄은

FOREIGN KEY (PharName, Tradename) REFERENCES Drug(PharName, Tradename), 

은 콤마를 제거하기 읽습니다.

행운을 빈다.

관련 문제