【问题标题】:How do I solve the Missing Paranthesis error如何解决缺少括号错误
【发布时间】:2021-05-27 18:37:42
【问题描述】:

我正在尝试使用创建表命令来创建关系;

create table Driver(

Driver_Licence char(15) primary key,

SSN int unique,

First_Name varchar(50) not null,

Last_Name varchar(50),

Birth_Date date DEFAULT '1900-01-01',

Hire_Date date COMMENT 'Hire_Date is the date that employee was first Hired',

State char(2),

INDEX (State),

CONSTRAINT CHK_Driver_HireDate CHECK(Hire_Date > Birth_Date)

);

但我不断收到此错误:

Error report -
ORA-00907: missing right parenthesis
00907. 00000 -  "missing right parenthesis"
*Cause:    
*Action:

我一直在尝试解决这个问题,但我一直无法弄清楚如何解决它。如果你们中的任何一个可以帮助我,那将是一个很大的帮助!

【问题讨论】:

  • 在其他观察中,与您的问题无关。您已将 SSN 定义为 INT。除非它们实际上是 数字,否则不应将列定义为数字类型。 SSN、电话号码、邮政编码不是数字,它们只是根据任意规则限制为数字字符的值。如果您将它们声明为数字(NUMBER、INT 等),您可能会丢失任何前导零。顺便说一句,电话“拨号”与字母相关联的原因不是为了方便短信,而是因为电话号码最初包含字母。我的第一个电话“号码”是 WH9-3187。

标签: sql oracle computer-science information-schema


【解决方案1】:

我认为 Oracle 不支持表中的内联 cmets 或创建索引。这些需要是单独的语句。

Oracle 建议使用varchar2() 而不是varchar()。并且日期文字应该以date:

开头
create table Driver(
    Driver_Licence char(15) primary key,
    SSN int unique,
    First_Name varchar2(50) not null,
    Last_Name varchar2(50),
    Birth_Date date DEFAULT date '1900-01-01',
    Hire_Date date,
    State char(2),
    CONSTRAINT CHK_Driver_HireDate CHECK(Hire_Date > Birth_Date)
);

comment on column driver.hire_date is 'Hire_Date is the date that employee was first Hired';

create index idx_driver_state on driver(state);

Here 是一个 dbfiddle。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-23
    • 1970-01-01
    • 2016-02-14
    相关资源
    最近更新 更多