2017-10-29 198 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

我做了所有你提到的修改,但它仍然給我同樣的錯誤,錯過了右括號。 –