如何在oracle中使默认值为null

时间:2014-12-27 13:45:47

标签: database oracle

create table patient (
    p_code number(5) primary key,
    p_name varchar2(50) not null,
    DOB date(15) not null,
    p_phone number(30)   default null,
    st varchar2(20) not null,
    city varchar2(15) not null,
    state varchar2(15)   default null,
    zip_code number(10) not null,
    w_code number(5) references ward (w_code)  
)

它给了我ORA-00907: missing right parenthesis

1 个答案:

答案 0 :(得分:1)

在所有数据库中,当您遗漏NULL时,列的默认值为not null。所以,你可以写:

create table patient (
    p_code number(5) not null primary key,
    p_name varchar2(50) not null,
    DOB date not null,
    p_phone number(30),
    st varchar2(20) not null,
    city varchar2(15) not null,
    state varchar2(15),
    zip_code number(10) not null,
    w_code number(5) references ward (w_code)  
)

作为一个说明。为此,Oracle还接受nulldefault null,因此这些也是可以接受的:

    p_phone number(30) null,
    p_phone number(30) default null,

您的代码存在问题date(15)date没有采取长度参数。

顺便说一句,您应该使用字符串而不是数字来存储电话号码和邮政编码。它们可以有前导零。