Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.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
为什么我的sqlplus代码中的复合主键出现ORA-00936错误?_Sql_Oracle_Sqlplus_Composite Primary Key_Ora 00936 - Fatal编程技术网

为什么我的sqlplus代码中的复合主键出现ORA-00936错误?

为什么我的sqlplus代码中的复合主键出现ORA-00936错误?,sql,oracle,sqlplus,composite-primary-key,ora-00936,Sql,Oracle,Sqlplus,Composite Primary Key,Ora 00936,错误就在这个代码块的末尾 SQL> CREATE TABLE Hotel 2 (hotelNo INTEGER NOT NULL 3 ,hotelName VARCHAR2(50) NOT NULL 4 ,city VARCHAR2(50) NOT NULL 5 ,CONSTRAINT PKHotel PRIMARY KEY (hotelNo) 6 ); Table created. SQL> CR

错误就在这个代码块的末尾

SQL> CREATE TABLE Hotel
2  (hotelNo          INTEGER       NOT NULL
3  ,hotelName        VARCHAR2(50)  NOT NULL
4  ,city             VARCHAR2(50)  NOT NULL
5  ,CONSTRAINT PKHotel PRIMARY KEY (hotelNo)
6  );

Table created.

SQL> CREATE TABLE Room
2  (roomNo           INTEGER       NOT NULL
3  ,hotelNo          INTEGER       NOT NULL
4  ,type             CHAR(6)       NOT NULL
5  ,price            DECIMAL (3,2) NOT NULL
6  ,CONSTRAINT PKRoom PRIMARY KEY (roomNo, hotelNo)
7  ,CONSTRAINT FKRoom FOREIGN KEY (hotelNo) REFERENCES Hotel (hotelNo)
8  ,CONSTRAINT chk_type CHECK (type IN ('Single', 'Double', 'Family'))
9  ,CONSTRAINT chk_roomNo CHECK(roomNo > 1 AND roomNo < 100)
10  ,CONSTRAINT chk_price CHECK(price > 10.00 AND price <100.00)
11  );

Table created.

SQL> -- Q3.
SQL> CREATE TABLE Guest
2  (guestNo         INTEGER        NOT NULL
3  ,guestName       VARCHAR(50)    NOT NULL
4  ,guessAddress    VARCHAR(50)    NOT NULL
5  ,CONSTRAINT PKGuest PRIMARY KEY (guestNo)
6  );

Table created.

SQL>
SQL> CREATE TABLE Booking
2  (hotelNo         INTEGER        NOT NULL
3  ,guestNo         INTEGER        NOT NULL
4  ,dateFrom        DATE           NOT NULL
5  ,dateTo          DATE           NOT NULL
6  ,roomNo          INTEGER        NOT NULL
7  ,discount     DECIMAL(2,2)DEFAULT
8  ,CONSTRAINT PKBooking PRIMARY KEY (hotelNo,guestNo,dateFrom)
9  ,CONSTRAINT FKBooking_1 FOREIGN KEY (hotelNo, roomNo) REFERENCES Room                (hotelNo, roomNo)
10  ,CONSTRAINT FKBooking_2 FOREIGN KEY (guestNo) REFERENCES Guest (guestNo)
11  );
,CONSTRAINT PKBooking PRIMARY KEY (hotelNo,guestNo,dateFrom)
*
ERROR at line 8:
ORA-00936: missing expression
SQL>createtable酒店
2(hotelNo整数不为空
3,hotelName VARCHAR2(50)不为空
4,城市VARCHAR2(50)不为空
5、酒店主键(酒店号)
6  );
表已创建。
SQL>创建桌子室
2(无整数不为空
3,hotelNo整数不为空
4,类型CHAR(6)不为空
5,价格小数(3,2)不为空
6,房间主键(房间号,酒店号)
7、房间外键(hotelNo)参考酒店(hotelNo)
8、约束chk_类型检查(输入('Single'、'Double'、'Family'))
9、约束chk炣Room No CHECK(Room No>1,Room No<100)
10,约束chk_价格检查(价格>10.00,价格--Q3。
SQL>创建表来宾
2(guestNo整数不为空
3,guestName VARCHAR(50)不为空
4,猜测地址VARCHAR(50)不为空
5,约束PKGuest主键(guestNo)
6  );
表已创建。
SQL>
SQL>创建表预订
2(hotelNo整数不为空
3,guestNo整数不为空
4、dateFrom日期不为空
5,dateTo日期不为空
6,roomNo整数不为空
7、折扣小数(2,2)默认值
8,预订主键(hotelNo、guestNo、dateFrom)
9,1号外键(hotelNo,roomNo)参考房间(hotelNo,roomNo)
10,U 2外键(guestNo)引用Guest(guestNo)
11  );
,约束PKBooking主键(hotelNo、guestNo、dateFrom)
*
第8行错误:
ORA-00936:缺少表达式

我真的不明白为什么这不起作用,因为语法是好的。我假设逻辑是错误的,但我在这方面相对较新,所以我不确定。我真的很感激一些反馈。

这是因为您忽略了折扣的默认值/表达式。

这是因为您忽略了折扣的默认值/表达式NT.

嗯,错误在这里:

,discount    DECIMAL(2,2)DEFAULT
如果在列定义中启动
DEFAULT
子句,则应指定构成默认值的表达式,或将
DEFAULT
关键字保留在一旁

还是我遗漏了什么


Marco

嗯,错误在这里:

,discount    DECIMAL(2,2)DEFAULT
如果在列定义中启动
DEFAULT
子句,则应指定构成默认值的表达式,或将
DEFAULT
关键字保留在一旁

还是我遗漏了什么


马可

非常感谢你的帮助,我真的很感激!非常感谢你的帮助,我真的很感激!