当我不在时收到我缺少正确的paren的错误

时间:2019-04-17 16:31:29

标签: sql oracle oracle-livesql

创建两个表时出现错误,但我没有在第二个表上缺少右括号。

我尝试了此代码的不同oracle变体,但仍然出现错误。

(ORACLE LIVE SQL)

CREATE TABLE PET_OWNER 
    (OwnerID    Integer Primary Key,
    OwnerLastName   Char(25)    Not Null,
    OwnerFirstName  Char(25)    Not Null,
    OwnerPhone  Char(25)    Null,
    OwnerEmail  Char(50)    Not Null);

CREATE TABLE PET_DATA
    (PetID Integer Not Null,
    PetName Char(50)    Not Null,
    PetType Char(25)    Not Null,
    PetBreed Char(50)   Not Null,
    PetDOB  Varchar(50) Not Null,
    Primary Key (PetID)
    Constraint FK_PetOwner Foreign Key (OwnerID)
    References Owner(OwnerID));

我希望可以创建表,但是只有第一个表可以成功创建。第二个表具有外键。

2 个答案:

答案 0 :(得分:1)

在第二张表的主键定义之后,您似乎缺少逗号。

当真正的问题是其他语法错误时,Oracle分析器通常会抱怨缺少右括号。

答案 1 :(得分:0)

我建议:

CREATE TABLE PET_OWNER (
    OwnerID    Integer Primary Key,
    OwnerLastName   varchar2(25)    Not Null,
    OwnerFirstName  varchar2(25)    Not Null,
    OwnerPhone  varchar2(25)    Null,
    OwnerEmail  varchar2(50)    Not Null
);

CREATE TABLE PET_DATA (
    PetID Integer Not Null,
    OwnerID Integer,
    PetName varchar2(50)    Not Null,
    PetType varchar2(25)    Not Null,
    PetBreed varchar2(50)   Not Null,
    PetDOB  varchar2(50) Not Null,
    Primary Key (PetID),
    Constraint FK_PetOwner Foreign Key (OwnerID) References Pet_Owner(OwnerID)
);

这解决了一些小问题(第二个表中缺少OwnerId列,错误的表名)。它还将varchar2()用作可变长度的字符串,而不是char(),它们使用空格填充到指定的长度。