2015-11-04 105 views
0
CREATE TABLE PoolActivity_T 
(PoolID   NUMBER(11,0)  NOT NULL, 
ServiceDate  DATE DEFAULT SYSDATE NOT NULL, 
ActivityID  NUMBER(11,0) NOT NULL, 
CONSTRAINT PoolActivity_PK PRIMARY KEY (PoolID,ServiceDate,ActivityID) 
CONSTRAINT PoolActivity_FK FOREIGN KEY (PoolID) 
REFERENCES PoolVisit_T(PoolID), 
CONSTRAINT PoolActivity_FK FOREIGN KEY (ActivityID) 
REFERENCES Activity_T (ActivityID) 
); 

這是我的代碼,我不知道爲什麼出現錯誤。爲什麼這個SQL代碼顯示「缺少右括號」的錯誤?

CREATE TABLE Customer_T 
(CustomerID   NUMBER(11,0)  NOT NULL, 
CustomerFname   VARCHAR2(25), 
CustomerMname   VARCHAR2(25), 
CustomerLname   VARCHAR2(25), 
CustomerAddress1   VARCHAR2(50), 
CustomerAddress2   VARCHAR2(50), 
CustomerCity   VARCHAR2(25), 
CustomerState   CHAR(2), 
CustomerZipCode   NUMBER(5,0), 
CustomerPhoneNumber  NUMBER(11,0), 
CONSTRAINT Customer_PK PRIMARY KEY (CustomerID) 
); 

CREATE TABLE Pool_T  
(PoolID   NUMBER(11,0)  NOT NULL, 
PoolAddress1 VARCHAR2(25), 
PoolAddress2  VARCHAR2(25), 
PoolCity  VARCHAR2(25), 
PoolState  VARCHAR2(25), 
PoolZipCode  NUMBER(5,0), 
TypeSurface  VARCHAR2(9), 
Gallon  INTEGER, 
Filters  VARCHAR2(25), 
VisitPerMonth INTEGER,  
Dates   DATE DEFAULT SYSDATE, 
Fee   NUMBER(11,0), 
CONSTRAINT Pool_PK PRIMARY KEY (PoolID) 
); 

CREATE TABLE PoolVisit_T 
(PoolID   NUMBER(11,0)  NOT NULL, 
ServiceDate  DATE DEFAULT SYSDATE NOT NULL, 
LengthStay  INTEGER, 
CONSTRAINT Poolvisit_PK PRIMARY KEY (PoolID,ServiceDate) 
CONSTRAINT PoolVisit_FK FOREIGN KEY (PoolID) 
REFERENCES Pool_T (PoolID) 
); 

CREATE TABLE PoolActivity_T 
(PoolID   NUMBER(11,0)  NOT NULL, 
ServiceDate  DATE DEFAULT SYSDATE NOT NULL, 
ActivityID  NUMBER(11,0) NOT NULL, 
CONSTRAINT PoolActivity_PK PRIMARY KEY (PoolID,ServiceDate,ActivityID) 
CONSTRAINT PoolActivity_FK FOREIGN KEY (PoolID) 
REFERENCES PoolVisit_T(PoolID), 
CONSTRAINT PoolActivity_FK FOREIGN KEY (ActivityID) 
REFERENCES Activity_T (ActivityID) 
); 

CREATE TABLE PoolChemical_T 
(PoolID   NUMBER(11,0)  NOT NULL, 
ServiceDate  DATE DEFAULT SYSDATE NOT NULL, 
ChemicalName VARCHAR2(25)  NOT NULL, 
Quantity  INTEGER, 
Cost   NUMBER(11,2), 
CONSTRAINT PoolChemical_PK PRIMARY KEY (PoolID,ServiceDate,ChemicalName) 
CONSTRAINT PoolChemical_FK FOREIGN KEY (PoolID) 
REFERENCES PoolVisit_T(PoolID) 
CONSTRAINT PoolChemical_FK FOREIGN KEY (ChemicalName) 
REFERENCES Chemical_T(ChemicalName) 
); 

CREATE TABLE Activity_T 
(ActivityID   NUMBER(11,0)  NOT NULL, 
ActivityDesc   VARCHAR2(500), 
CONSTRAINT Activity_PK PRIMARY KEY (ActivityID)); 

CREATE TABLE Chemical_T 
(ChemicalName  VARCHAR2(25)  NOT NULL, 
CONSTRAINT Chemical_PK PRIMARY KEY (ChemicalName)); 
+2

不是uml相關的,可能是oracle(不是mysql) – amdixon

+0

我怎麼能一次縮進這麼多的代碼? – MarioHo

+0

@MarioHo - [請參閱幫助中心](http://stackoverflow.com/help/formatting)。 –

回答

0

的錯誤不只是在你突出的表,它也是在人之前,PoolVisit_T。在這兩個,你只是缺少一個逗號主鍵約束後:

CREATE TABLE PoolVisit_T 
(PoolID   NUMBER(11,0)  NOT NULL, 
ServiceDate  DATE DEFAULT SYSDATE NOT NULL, 
LengthStay  INTEGER, 
CONSTRAINT Poolvisit_PK PRIMARY KEY (PoolID,ServiceDate), -- was missing comma 
CONSTRAINT PoolVisit_FK FOREIGN KEY (PoolID) 
REFERENCES Pool_T (PoolID) 
); 

CREATE TABLE PoolActivity_T 
(PoolID   NUMBER(11,0)  NOT NULL, 
ServiceDate  DATE DEFAULT SYSDATE NOT NULL, 
ActivityID  NUMBER(11,0) NOT NULL, 
CONSTRAINT PoolActivity_PK PRIMARY KEY (PoolID,ServiceDate,ActivityID), -- was missing 
CONSTRAINT PoolActivity_FK FOREIGN KEY (PoolID) 
REFERENCES PoolVisit_T(PoolID), 
CONSTRAINT PoolActivity_FK FOREIGN KEY (ActivityID) 
REFERENCES Activity_T (ActivityID) 
); 

而你在之後的一個缺二:

CREATE TABLE PoolChemical_T 
(PoolID   NUMBER(11,0)  NOT NULL, 
ServiceDate  DATE DEFAULT SYSDATE NOT NULL, 
ChemicalName VARCHAR2(25)  NOT NULL, 
Quantity  INTEGER, 
Cost   NUMBER(11,2), 
CONSTRAINT PoolChemical_PK PRIMARY KEY (PoolID,ServiceDate,ChemicalName), -- was missing 
CONSTRAINT PoolChemical_FK FOREIGN KEY (PoolID) 
REFERENCES PoolVisit_T(PoolID), -- was missing 
CONSTRAINT PoolChemical_FK FOREIGN KEY (ChemicalName) 
REFERENCES Chemical_T(ChemicalName) 
); 

如果你使用像SQL開發的IDE它將突出顯示像這樣的語法問題。

但你仍然有問題;您PoolActivity_T外鍵:

CONSTRAINT PoolActivity_FK FOREIGN KEY (PoolID) 
REFERENCES PoolVisit_T(PoolID), 

只指PoolID,但PoolVisit_T主鍵和主鍵有兩列,因此需要爲:

CONSTRAINT PoolActivity_FK FOREIGN KEY (PoolID,ServiceDate) 
REFERENCES PoolVisit_T(PoolID,ServiceDate), 

,你已經使用相同的FK名兩個約束,所以下一位是:

CONSTRAINT PoolActivity_FK2 FOREIGN KEY (ActivityID) 
REFERENCES Activity_T (ActivityID) 

(但挑選更具描述性的名稱FK,也許),您必須在此之前創建Activity_T表格。

而且類似的問題與PoolChemical_T

CONSTRAINT PoolChemical_PK PRIMARY KEY (PoolID,ServiceDate,ChemicalName), 
CONSTRAINT PoolChemical_FK FOREIGN KEY (PoolID,ServiceDate) 
REFERENCES PoolVisit_T(PoolID,ServiceDate), 
CONSTRAINT PoolChemical_FK2 FOREIGN KEY (ChemicalName) 
REFERENCES Chemical_T(ChemicalName) 

,創造Chemical_T第一。

SQL Fiddle創建所有表。

+0

非常感謝!你想告訴我如何縮進我的所有代碼嗎? – MarioHo

+0

用於以代碼形式顯示它們。 – MarioHo

+0

非常感謝!這真是一個沮喪的夜晚做我的uml作業。這似乎很容易。但一旦我跑了它,很多錯誤出來了。 – MarioHo