2017-06-13 81 views
0

表的工作人员本身由主键和外键的如何从给定的数据库模式创建单个表?

我一直在使用这种查询语句

CREATE TABLE STAFF (
    STAFF_ID number, 
    STAFF_NAME varchar(30), 
    DEPARTMENT_ID number, 
    PRIMARY KEY(STAFF_ID), 
    FOREIGN KEY(DEPARTMENT_ID) references DEPARTMENT(DEPARTMENT_ID)) 
); 

我已经写了这一点,并得到一个“对象的工作人员不存在错误”,沿一个“缺失或无效的选项”。相应的代码是ORA 04043 AND ORA 00922.

这是数据库架构的图像:

This is the image of database schema

+1

DEPARTMENT'表是否存在? – user75ponic

+1

顺便说一句,表创建语法有一个额外的括号。 – user75ponic

回答

0

如果你指的外键,然后创建子表之前绝对必须存在于表。在创建员工表之前,您的案例部门表必须存在。作为最佳实践,为主键和外键提供约束名称总是一个好主意。

CREATE TABLE department 
(
    department_id    NUMBER, 
    department_name   VARCHAR2 (30), 
    department_block_number NUMBER, 
    CONSTRAINT department_pk PRIMARY KEY (department_id) 
); 


CREATE TABLE staff 
(
    staff_id  NUMBER, 
    staff_name  VARCHAR (30), 
    department_id NUMBER, 
    CONSTRAINT staff_pk PRIMARY KEY (staff_id), 
    CONSTRAINT department_fk FOREIGN KEY 
     (department_id) 
     REFERENCES department (department_id) 
);