Oracle alter table references

时间:2014-04-14 01:35:26

标签: oracle

我是oracle的新手。我创建了一个简单的表,我从一个注释中引用

CREATE TABLE employees (
employee_id NUMBER(6),
first_name VARCHAR2(20),
last_name VARCHAR2(25) CONSTRAINT emp_lname_nn NOT NULL,
email VARCHAR2(25) CONSTRAINT emp_email_nn NOT NULL,
phone_number VARCHAR2(20),
hire_date DATE CONSTRAINT emp_hdate_nn NOT NULL,
job_id VARCHAR2(10) CONSTRAINT emp_job_nn NOT NULL,
salary NUMBER(8,2),
commission_pct NUMBER(2,2),
manager_id NUMBER(6),
department_id NUMBER(4),
CONSTRAINT emp_salary_min CHECK (salary > 0),
CONSTRAINT emp_email_uk UNIQUE (email)
) ;

然后尝试更改表以向employees表添加完整性约束。完整性约束强制执行业务规则,并防止将无效信息输入表中。

ALTER TABLE employees
ADD (CONSTRAINT emp_emp_id_pk PRIMARY KEY (employee_id),
CONSTRAINT emp_dept_fk FOREIGN KEY (department_id)
REFERENCES departments,
CONSTRAINT emp_job_fk FOREIGN KEY (job_id)
REFERENCES jobs (job_id),
CONSTRAINT emp_manager_fk FOREIGN KEY (manager_id)
REFERENCES employees
) ;

但后来我收到了错误

  

参考部门,              *第4行的错误:ORA-00942:表或视图不存在

我检查了说明,他们没有说创建部门表。他们只是展示如何创建员工表。

1 个答案:

答案 0 :(得分:0)

错误说明DEPARTMENTS表缺失...下面的外键constratint引用departments表的department_id列。

CONSTRAINT emp_dept_fk FOREIGN KEY(department_id) 参考部门

因此,使用department_id列创建departments表,并添加以下约束,您需要创建一个包含job_id列的作业表...

CONSTRAINT emp_job_fk FOREIGN KEY(job_id) REFERENCES个职位(job_id),