无法创建缺少右括号的表

时间:2017-06-21 01:52:42

标签: sql oracle

有人能告诉我这段代码有什么问题吗?我无法弄清楚它有什么问题。我得到的唯一错误信息是"缺少右括号"。请帮忙

CREATE TABLE employee (
emp_no NUMBER(3) NOT NULL PRIMARY KEY,
emp_name VARCHAR(15) NOT NULL UNIQUE,
emp_salary DECIMAL(8,2) NOT NULL,
djob VARCHAR(15) NOT NULL FOREIGN KEY REFERENCES depot(djob)
);

3 个答案:

答案 0 :(得分:2)

问题是FOREIGN KEY。你可以这样做:

CREATE TABLE employee (
    emp_no NUMBER(3) NOT NULL PRIMARY KEY,
    emp_name VARCHAR2(15) NOT NULL UNIQUE,
    emp_salary DECIMAL(8,2) NOT NULL,
    djob VARCHAR(15) NOT NULL REFERENCES depot(djob)
);

对于内联声明,FOREIGN KEY不是必需的。

请注意,我还将VARCHAR()更改为VARCHAR2(),这更适合Oracle。

答案 1 :(得分:0)

最后一行不应该将外键作为单独的行吗?

`

CREATE TABLE employee (
    emp_no NUMBER(3) NOT NULL PRIMARY KEY,
    emp_name VARCHAR(15) NOT NULL UNIQUE,
    emp_salary DECIMAL(8,2) NOT NULL,
    djob VARCHAR(15) NOT NULL,
    FOREIGN KEY
        REFERENCES depot(djob)
);

答案 2 :(得分:0)

以下是一个示例:http://sqlfiddle.com/#!4/19250

CREATE TABLE dept (
deptno number PRIMARY KEY,
dname varchar2(100));

CREATE TABLE employee (
emp_no NUMBER(3) NOT NULL PRIMARY KEY,
emp_name VARCHAR(15) NOT NULL UNIQUE,
emp_salary DECIMAL(8,2) NOT NULL,
djob number NOT NULL,
CONSTRAINT fk_job FOREIGN KEY (djob) REFERENCES dept(deptno)
);