Ошибка с установкой значений - PullRequest
0 голосов
/ 08 февраля 2012

У меня проблема со вставкой значений в мою таблицу.

Вот сценарий:

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);

Ошибка:

Инструкция INSERT находится в конфликте с ограничением FOREIGN KEY SAME TABLE "EMP_SELF_KEY".

Может кто-нибудь помочь?Спасибо!

1 Ответ

5 голосов
/ 08 февраля 2012

Во втором блоке вставок в EMP ни одно из значений MGR (8219, 4322, 4564, 8678) не отображается в качестве значений EMPNO в предыдущих вставках, следовательно, нарушение внешнего ключа. Эти «менеджеры» должны быть вставлены как «сотрудники», прежде чем на них можно будет ссылаться по внешнему ключу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...