當我運行此create table陳述句時,我收到錯誤“ORA-00907:缺少右括號”:
create table employee(
primary key(emp_id number(20)),
emp_name varchar(30),
birth_date date CHECK(birth_date>18),
gender varchar(10),
dept_no number(20)
CONSTRAINT fk FOREIGN KEY(dept_no)
REFERENCES department(dept_no),
address varchar(50),
designation varchar(20)
CHECK(designation IN('manager', 'clerk', 'leader', 'analyst', 'designer', 'coder','tester')),
salary number(50)
CHECK(salary>0),
experience number(2),
email_id varchar(30)
CONSTRAINT chk_email
CHECK (REGEXP_LIKE(email_id,'^[A-Za-z0-9_.] @[A-Za-z] \.[A-Za-z]{2,4}$'))
);
我查看了確切的語法,經過多次檢查,一切似乎都很完美,但錯誤仍然存??在。怎么了?
uj5u.com熱心網友回復:
一點兒
- 無效的語法(主鍵關鍵字的位置),
- 多余的外鍵關鍵字(你會使用它們out of line,而不是inline),
- 列的檢查約束
birth_date錯誤(日期怎么會大于 18?), - Oracle建議我們使用
varchar2,varchar number(50)精度太大(也許你寧愿跳過它)。
修復后(使用虛擬主表):
SQL> CREATE TABLE department
2 (
3 dept_no NUMBER PRIMARY KEY
4 );
Table created.
員工:
SQL> CREATE TABLE employee
2 (
3 emp_id NUMBER (20) PRIMARY KEY,
4 emp_name VARCHAR2 (30),
5 birth_date DATE,
6 gender VARCHAR2 (10),
7 dept_no NUMBER CONSTRAINT fk_emp_dept REFERENCES department (dept_no),
8 address VARCHAR2 (50),
9 designation VARCHAR2 (20)
10 CHECK
11 (designation IN ('manager',
12 'clerk',
13 'leader',
14 'analyst',
15 'designer',
16 'coder',
17 'tester')),
18 salary NUMBER CHECK (salary > 0),
19 experience NUMBER (2),
20 email_id VARCHAR2 (30)
21 CONSTRAINT chk_email CHECK
22 (REGEXP_LIKE (
23 email_id,
24 '^[A-Za-z0-9_.] @[A-Za-z] \.[A-Za-z]{2,4}$'))
25 );
Table created.
SQL>
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/518038.html
