出现“缺少右括号”错误 SQL--找不到问题
Getting "missing right parenthesis' error SQL--Cannot find the issue
我正在尝试在下面创建四个表格。我的前两个表 运行 正确,但我的后两个表出错并显示相同的错误消息:
ORA-00907: missing right parenthesis
ORA-06512: at "SYS.WWV_DBMS_SQL_APEX_200200", line 626
ORA-06512: at "SYS.DBMS_SYS_SQL", line 1658
ORA-06512: at "SYS.WWV_DBMS_SQL_APEX_200200", line 612
ORA-06512: at "APEX_200200.WWV_FLOW_DYNAMIC_EXEC", line 1749
我无法弄清楚这段代码有什么问题。我认识到这可能是某处的语法错误,但我找不到它。我应该怎么做才能修复此错误?
create table item
(
itemID number(5) constraint CAMP_itemID_pk primary key,
itemDescription varchar2(100),
cleaned varchar2(1),
stock number(5)
);
create table people
(
peopleID number(10) constraint CAMP_peopleID_pk primary key,
firstName varchar2(20),
lastName varchar2(20),
phone number(10),
discount varchar2(20)
);
create table checkout
(
checkoutID constraint CAMP_checkoutID_pk primary key number(10),
peopleID number(10),
checkoutDate date(),
returnDate date(),
saleTotal number(10),
returned varchar(1),
constraint CAMP_peopleID_fk foreign key (peopleID) references people(peopleID)
);
create table checkoutDetail
(
orderDetailID constraint CAMP_orderDetailID_pk primary key number(10),
checkoutID number(10),
itemID,
quantity number(5),
constraint CAMP_checkoutID_fk foreign key (checkoutID) references checkout(checkoutID),
constraint CAMP_itemID_fk foreign key (itemID) references item(itemID)
);
用内联约束定义列的语法是:
COLUMN_NAME DATATYPE CONTRAINTS
但是你有约束后的数据类型。
日期没有精度(也不是函数)所以后面不应该有大括号。
itemID
需要数据类型。
像这样:
create table checkout (
checkoutID number(10) constraint CAMP_checkoutID_pk primary key,
peopleID number(10),
checkoutDate date,
returnDate date,
saleTotal number(10),
returned varchar(1),
constraint CAMP_peopleID_fk foreign key (peopleID) references people(peopleID)
);
create table checkoutDetail (
orderDetailID number(10) constraint CAMP_orderDetailID_pk primary key,
checkoutID number(10),
itemID number(5),
quantity number(5),
constraint CAMP_checkoutID_fk foreign key (checkoutID) references checkout(checkoutID),
constraint CAMP_itemID_fk foreign key (itemID) references item(itemID)
);
db<>fiddle here
我正在尝试在下面创建四个表格。我的前两个表 运行 正确,但我的后两个表出错并显示相同的错误消息:
ORA-00907: missing right parenthesis
ORA-06512: at "SYS.WWV_DBMS_SQL_APEX_200200", line 626
ORA-06512: at "SYS.DBMS_SYS_SQL", line 1658
ORA-06512: at "SYS.WWV_DBMS_SQL_APEX_200200", line 612
ORA-06512: at "APEX_200200.WWV_FLOW_DYNAMIC_EXEC", line 1749
我无法弄清楚这段代码有什么问题。我认识到这可能是某处的语法错误,但我找不到它。我应该怎么做才能修复此错误?
create table item
(
itemID number(5) constraint CAMP_itemID_pk primary key,
itemDescription varchar2(100),
cleaned varchar2(1),
stock number(5)
);
create table people
(
peopleID number(10) constraint CAMP_peopleID_pk primary key,
firstName varchar2(20),
lastName varchar2(20),
phone number(10),
discount varchar2(20)
);
create table checkout
(
checkoutID constraint CAMP_checkoutID_pk primary key number(10),
peopleID number(10),
checkoutDate date(),
returnDate date(),
saleTotal number(10),
returned varchar(1),
constraint CAMP_peopleID_fk foreign key (peopleID) references people(peopleID)
);
create table checkoutDetail
(
orderDetailID constraint CAMP_orderDetailID_pk primary key number(10),
checkoutID number(10),
itemID,
quantity number(5),
constraint CAMP_checkoutID_fk foreign key (checkoutID) references checkout(checkoutID),
constraint CAMP_itemID_fk foreign key (itemID) references item(itemID)
);
用内联约束定义列的语法是:
COLUMN_NAME DATATYPE CONTRAINTS
但是你有约束后的数据类型。
日期没有精度(也不是函数)所以后面不应该有大括号。
itemID
需要数据类型。
像这样:
create table checkout (
checkoutID number(10) constraint CAMP_checkoutID_pk primary key,
peopleID number(10),
checkoutDate date,
returnDate date,
saleTotal number(10),
returned varchar(1),
constraint CAMP_peopleID_fk foreign key (peopleID) references people(peopleID)
);
create table checkoutDetail (
orderDetailID number(10) constraint CAMP_orderDetailID_pk primary key,
checkoutID number(10),
itemID number(5),
quantity number(5),
constraint CAMP_checkoutID_fk foreign key (checkoutID) references checkout(checkoutID),
constraint CAMP_itemID_fk foreign key (itemID) references item(itemID)
);
db<>fiddle here