我正在尝试创建表,但出现错误“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的新手,并且对语法不是很熟悉。谁能告诉我我做错了什么?
谢谢!
最佳答案
这个表情应该是什么?
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)
)
注意我将字符串更改为oraclet推荐的
varchar2()
。我还建议您将phone
更改为字符串,以便它可以处理前导零。
关于sql - 缺少右括号错误(ORA-00907 : missing right parenthesis),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28268197/