我正在尝试创建一个表,我收到错误“ORA-00907:缺少右括号”。
CREATE TABLE data_create (
studentid NUMBER(9) PRIMARY KEY,
name VARCHAR(25) NOT NULL,
program CHAR(4)
CONSTRAINT check_program
CHECK (program = 'CP', 'CPA', 'CSTC', 'CSTY'),
dob DATE,
email VARCHAR(20)
CONSTRAINT check_email UNIQUE (email),
phone NUMBER(10),
feepaid NUMBER(6)
CONSTRAINT check_feepaid
CHECK (feepaid BETWEEN 0 and 9999.99)
)
我尝试过几种不同的东西,但不能让错误消失。我是oracle的新手,对语法不是很熟悉。谁能告诉我我做错了什么? 谢谢!
答案 0 :(得分:2)
这个表达式应该是什么?
CHECK (program = 'CP' || 'CPA || 'CSTC' || 'CSTY'),
在Oracle中,||
是字符串连接。也许你的意思是:
CHECK (program IN ('CP', 'CPA', 'CSTC', 'CSTY'),
可能还有其他错误,但这个错误很突出。
编辑:
以下适用于SQL Fiddle:
CREATE TABLE data_create (
studentid NUMBER(9) PRIMARY KEY,
name VARCHAR2(25) NOT NULL,
program CHAR(4)
CONSTRAINT check_program CHECK (program IN ('CP', 'CPA', 'CSTC', 'CSTY')),
dob DATE,
email VARCHAR2(20) UNIQUE,
phone NUMBER(10),
feepaid NUMBER(6)
CONSTRAINT check_feepaid
CHECK (feepaid BETWEEN 0 and 9999.99)
)
注意我将字符串更改为varchar2()
,Oracle建议这样做。我还建议您将phone
更改为字符串,以便它可以处理前导零。