缺少右括号?

me.*_*ser 2 sql oracle ddl syntax-error create-table

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)
);
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

ORA-00907:缺少右括号

Mur*_*nik 5

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)
);
Run Code Online (Sandbox Code Playgroud)

或者只使用一个非保留字的名称,例如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)
);
Run Code Online (Sandbox Code Playgroud)

编辑:
正如@a_horse_with_no_name所注释的那样,默认值“客户”是字符串文字,因此必须用单引号(')括起来。

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