2012-02-08 3 views
-8

テーブルに値を挿入する際に問題があります。ここで値を入力する際のエラー

はスクリプトです:

IF OBJECT_ID ('DEPT', 'table') IS NOT NULL 
DROP TABLE DEPT; 
GO 

CREATE TABLE DEPT (
    DEPTNO NUMERIC(2) NOT NULL, 
    DNAME VARCHAR(14), 
    LOC VARCHAR(13), 

    CONSTRAINT DEPT_PRIMARY_KEY PRIMARY KEY (DEPTNO)); 
GO 

INSERT INTO DEPT VALUES (10,'ACCOUNTING','NEW YORK'); 
INSERT INTO DEPT VALUES (20,'RESEARCH','DALLAS'); 
INSERT INTO DEPT VALUES (30,'SALES','CHICAGO'); 
INSERT INTO DEPT VALUES (40,'OPERATIONS','BOSTON'); 
GO 

IF OBJECT_ID ('EMP', 'table') IS NOT NULL 
    DROP TABLE EMP; 
GO 

CREATE TABLE EMP (
    EMPNO NUMERIC(4) NOT NULL, 
    ENAME VARCHAR(10), 
    JOB VARCHAR(9), 
    MGR NUMERIC(4) CONSTRAINT EMP_SELF_KEY REFERENCES EMP (EMPNO), 
    HIREDATE DATETIME, 
    SAL NUMERIC(7,2), 
    COMM NUMERIC(7,2), 
    DEPTNO NUMERIC(2) NOT NULL, 

    CONSTRAINT EMP_FOREIGN_KEY FOREIGN KEY (DEPTNO) 
    REFERENCES DEPT(DEPTNO), 

    CONSTRAINT EMP_PRIMARY_KEY PRIMARY KEY (EMPNO)); 
GO 

INSERT INTO EMP VALUES 
(7839,'KING','PRESIDENT',NULL,'17-11-1981',5000,NULL,10); 

INSERT INTO EMP VALUES 
(7698,'BLAKE','MANAGER',7839,'1-05-1981',2850,NULL,30); 

INSERT INTO EMP VALUES 
(7782,'CLARK','MANAGER',7839,'9-06-1981',2450,NULL,10); 

INSERT INTO EMP VALUES 
(7566,'JONES','MANAGER',7839,'2-04-1981',2975,NULL,20); 

INSERT INTO EMP VALUES 
(7654,'MARTIN','SALESMAN',7698,'28-09-1981',1250,1400,30); 

INSERT INTO EMP VALUES 
(7499,'ALLEN','SALESMAN',7698,'20-02-1981',1600,300,30); 

INSERT INTO EMP VALUES 
(7844,'TURNER','SALESMAN',7698,'8-09-1981',1500,0,30); 

INSERT INTO EMP VALUES 
(7900,'JAMES','CLERK',7698,'3-12-1981',950,NULL,30); 

INSERT INTO EMP VALUES 
(7521,'WARD','SALESMAN',7698,'22-02-1981',1250,500,30); 

INSERT INTO EMP VALUES 
(7902,'FORD','ANALYST',7566,'3-12-1981',3000,NULL,20); 

INSERT INTO EMP VALUES 
(7369,'SMITH','CLERK',7902,'17-12-1982',800,NULL,20); 

INSERT INTO EMP VALUES 
(7788,'SCOTT','ANALYST',7566,'09-12-1982',3000,NULL,20); 

INSERT INTO EMP VALUES 
(7876,'ADAMS','CLERK',7788,'12-01-1983',1100,NULL,20); 

INSERT INTO EMP VALUES 
(7934,'MILLER','CLERK',7782,'23-01-1982',1300,NULL,10); 

このやっているときにエラーがあります:

INSERT INTO EMP VALUES (7859, 'PHILIPPE', 'CLERK', 8219, 
'1988-06-11', 1300, NULL, 10), (7594, 'SEBASTIEN', 'SALESMAN', 1292, 
'1978-06-09', 3500, NULL, 10); 

INSERT INTO EMP VALUES (7956, 'MARTIN', 'DEALER', 4322, '1981-04-11', 
2300, 0, 20), (7947, 'SIMON', 'CLERK', 7655, '1981-07-12', 1800, 200, 
20); 

INSERT INTO EMP VALUES (7382, 'HUGO', 'ANALYST', 4564, '1982-05-11', 
1300, 0, 30), (7291, 'MARC', 'SALESMAN', 9768, '1981-03-09', 3500, 
NULL, 30); 

INSERT INTO EMP VALUES (7734, 'JOHN', 'MANAGER', 8678, '1983-11-11', 
4300, 0, 40), (7359, 'TOMMY', 'CLERK', 5340, '1981-04-10', 1200, 100, 
40); 

がエラー:

The instruction INSERT is in conflict with constraint FOREIGN KEY SAME TABLE "EMP_SELF_KEY".

を誰かが助けることはできますか?ありがとう! EMPへの挿入の2番目のブロックに

答えて

5

MGR値(8219、4322、4564、8678)のいずれも以前のインサートでEMPNO値、したがって外部キー違反として表示されません。これらの「管理者」は、外部キーによって参照される前に「従業員」として挿入する必要があります。

関連する問題