2015-03-08 181 views
0

我目前正在进行数据库练习练习,但由于出现外键错误,输入数据时出现问题。Oracle数据库查询问题 - 插入数据的问题

这里是我的成功上市

CREATE TABLE EMPLOYEE 
(
    FNAME VARCHAR2(15) NOT NULL, 
    MINIT CHAR,LNAME VARCHAR2(15) NOT NULL, 
    SSN CHAR(9) NOT NULL, 
    BDATE DATE, 
    ADDRESS VARCHAR2(30), 
    SEX CHAR(1), 
    SALARY NUMBER(10,2), 
    SUPER_SSN CHAR(9), 
    DNO NUMBER NOT NULL, 

    CONSTRAINT EMPPK PRIMARY KEY (SSN) DISABLE, 
    CONSTRAINT EMPSUPERFK FOREIGN KEY (SUPER_SSN) REFERENCES EMPLOYEE(SSN) DISABLE 
); 

Success the table was created

CREATE TABLE DEPARTMENT 
(
    DNAME VARCHAR2(15) NOT NULL, 
    DNUMBER NUMBER NOT NULL, 
    MGR_SSN CHAR(9) NOT NULL, 
    MGR_START_DATE DATE, 
    CONSTRAINT DEPTPK PRIMARY KEY (DNUMBER) DISABLE, 
    CONSTRAINT DEPTMGRFK FOREIGN KEY (MGR_SSN) REFERENCES EMPLOYEE(SSN) DISABLE 
); 

Success the table was created

ALTER TABLE DEPARTMENT ENABLE constraint DEPTPK; 

Success the table altered

alter table EMPLOYEE 
    add constraint fk_d_num 
    FOREIGN KEY (DNO) references DEPARTMENT (DNUMBER); 

Success the table altered

select distinct(TABLE_NAME), constraint_name, constraint_type, status 
from all_constraints 
where TABLE_NAME in('EMPLOYEE', 'DEPARTMENT'); 

成功显示表的状态和所有

现在,当谈到时间的数据插入

我用你的文档

insert into EMPLOYEE 
values ('Jonn', 'B', 'Smith','123456789', '09-FEB-1965', '731 Fondren, Houston, TX','M', 30000, '333445555', 5) 

的错误有命令我得到国家

Error starting at line : 1 in command -
insert into EMPLOYEE values ('Jonn', 'B', 'Smith', '123456789', '09-FEB-1965', '731 Fondren, Houston, TX', 'M', 30000, '333445555', 5)
Error report
SQL Error: ORA-02291: integrity constraint (PA96.FK_D_NUM) violated - parent key not found
02291. 00000 - "integrity constraint (%s.%s) violated - parent key not found"
Cause: A foreign key value has no matching primary key value.
Action: Delete the foreign key or add a matching primary key.

好这样好像我需要先与部门表一起工作。仍然得到相同的问题

我得出结论,我需要引用我插入的每个数据。

实例查询提示我得到是:

INSERT INTO Employee (Fname, Minit, Lname, Ssn, Bdate, Address, Sex, Salary, Super_ssn, Dno) 
VALUES ('Franklin', 'T', 'Wong', 333445555, '1955-12-08', '638 Voss, Houston, TX', M, 40000, 888665555, 5); 

我仍然得到部门表我尝试了失败:

INSERT INTO Department (Dname, Dnumber, Mgr_ssn, Mgr_start_date) 
VALUES ('Research', 5, 333445555, To_date('1988-05-22', ‘YYYY-MM-DD’)); 

我仍然得到失败。我如何解决这个问题。日期格式是我需要的部门表和员工表,但我一直在失败。

有人可以帮助这个请。我需要得到这些加载下面

INSERT INTO Employee (Fname, Minit, Lname, Ssn, Bdate, Address, Sex, Salary, Super_ssn, Dno) 
VALUES ('Jonn', 'B', 'Smith', 123456789, '1965-02-09', '731 Fondren, Houston, TX', M, 30000, 333445555, 5) 

进入Employee

INSERT INTO Department (Dname, Dnumber, Mgr_ssn, Mgr_start_date) 
VALUES ('Research', 5, 333445555, '1988-05-22') 

Department表。

使用Oracle。

谢谢。需要

回答

1

就像你注意到了部门员工之前插入:

INSERT INTO Department (Dname, Dnumber, Mgr_ssn, Mgr_start_date) 
VALUES ('Research', 5, 333445555, To_date('1988-05-22', 'YYYY-MM-DD')); 

INSERT INTO EMPLOYEE VALUES 
('Jonn', 'B', 'Smith','123456789', '09-FEB-1965', '731 Fondren, Houston, TX','M', 30000, '333445555', 5); 

与插入到部门问题是,这部分To_date('1988-05-22', ‘YYYY-MM-DD’)包含无效字符(周围的日期格式文字引号)。它应该像上面那样。

Sample SQL Fiddle