2017-10-29 189 views
1
CREATE TABLE PERSON 
(
    PID Int Not Null, 
    FirstName Varchar2(15) Not Null, 
    LastName Varchar2(15) Not Null, 
    Email Varchar2(50) Not Null, 
    Type Varchar2(15) Not Null Default Customer, 
    Primary Key(PID) 
); 

我真的发现了以下错误:缺少右括号?

ORA-00907: missing right parenthesis

回答

4

type在SQL中的保留字(或者,在它的Oracle的味道至少)。你既可以逃避它使用双引号("):

CREATE TABLE PERSON(
    PID Int Not Null, 
    FirstName Varchar2(15) Not Null, 
    LastName Varchar2(15) Not Null, 
    Email Varchar2(50) Not Null, 
    "Type" Varchar2(15) Default 'Customer' Not Null, 
    Primary Key(PID) 
); 

或者只是使用一个名称,不是保留字,如person_type

CREATE TABLE PERSON(
    PID Int Not Null, 
    FirstName Varchar2(15) Not Null, 
    LastName Varchar2(15) Not Null, 
    Email Varchar2(50) Not Null, 
    Person_Type Varchar2(15) Default 'Customer' Not Null, 
    Primary Key(PID) 
); 

编辑:
作为@a_horse_with_no_name评论说,默认值“Customer”是一个字符串文字,所以它必须用单引号括起来(')。

EDIT2:
默认值子句应位于not null子句之前。

+0

此外:'默认客户'必须'默认'客户'' –

+0

@a_horse_with_no_name良好的捕获。我已经编辑了这个答案。 – Mureinik

+0

我做了所有你提到的修改,但它仍然给我同样的错误,错过了右括号。 –