Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么此SQL代码显示错误为;缺少右括号“;?_Sql_Oracle - Fatal编程技术网

为什么此SQL代码显示错误为;缺少右括号“;?

为什么此SQL代码显示错误为;缺少右括号“;?,sql,oracle,Sql,Oracle,这是我的代码,我不明白为什么会出现错误 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,Acti

这是我的代码,我不明白为什么会出现错误

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)
);

错误不仅出现在突出显示的表中,也出现在前面的表中,
PoolVisit\t
。在这两种情况下,主键约束后都缺少一个逗号:

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));
在那之后的一次中你少了两次:

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)
);
如果您使用像SQL Developer这样的IDE,它将在运行时突出显示类似这样的语法问题

但你仍然有问题;您的
池活动\u T
外键:

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)
);
仅指的是
PoolID
,但
PoolVisit
上的主键和主键有两列,因此需要:

CONSTRAINT PoolActivity_FK FOREIGN KEY (PoolID) 
REFERENCES PoolVisit_T(PoolID),
您对两个约束使用了相同的FK名称,因此下一位是:

CONSTRAINT PoolActivity_FK FOREIGN KEY (PoolID,ServiceDate) 
REFERENCES PoolVisit_T(PoolID,ServiceDate),
(但可能选择更具描述性的FK名称),您必须在该表之前创建
Activity\u T

以及与
PoolChemical\u T
类似的问题:

CONSTRAINT PoolActivity_FK2 FOREIGN KEY (ActivityID) 
REFERENCES Activity_T (ActivityID)
并首先创建
Chemical\T


创建了所有表。

与uml无关,可能是oracle(不是mysql)我怎么能一次缩进这么多代码?@MarioHo-。非常感谢!你想告诉我如何缩进我所有的代码吗?非常感谢!这真是一个沮丧的夜晚,我在做作业。这似乎很容易。但是一旦我运行它,就会出现很多错误。哦!我把那些东西弄混了。实际上应该是SQL。我想我需要休息一下。再次感谢你!
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)