2015-03-08 174 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