【问题标题】:Getting an error that I'm missing a right paren when I am not [duplicate]当我不是 [重复] 时收到一个错误,我错过了正确的括号
【发布时间】:2019-04-17 16:31:29
【问题描述】:

我在创建两个表时遇到错误,我在第二个表上缺少正确的括号,尽管我没有。

我尝试了此代码的不同 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));

我希望创建表,但只有第一个表被成功创建。第二个表有一个外键。

【问题讨论】:

  • 您还缺少第二张表上的OwnerID 列。
  • 我关闭了这个作为另一个关于 ORA-00907 的问题的副本。我敦促您阅读my comment on that question

标签: sql oracle


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    我会推荐:

    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()——用空格填充到指定长度。

    【讨论】:

      猜你喜欢
      • 2017-05-11
      • 2016-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-03
      • 2016-06-19
      • 2016-08-20
      相关资源
      最近更新 更多