-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
의 정의에서
@NewbeeDev - 진술이 완전히 잘못되었습니다. 기본 키는 하나만 가질 수 있지만 기본 키는 여러 필드로 구성 될 수 있습니다. 감사. –
oracle을 사용하는 경우 PRIMARY KEY 및/또는 FOREIGN KEY보다 먼저 'CONSTRAINT'를 써야합니다. –