【问题标题】:Error with insterting values插入值时出错
【发布时间】:2012-03-01 06:23:10
【问题描述】:

我在向表中插入值时遇到问题。

这是脚本:

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 冲突 表“EMP_SELF_KEY”。

有人可以帮忙吗?谢谢!

【问题讨论】:

    标签: sql sql-server tsql insert sql-server-2008-r2


    【解决方案1】:

    在您对EMP 的第二个插入块中,没有一个MGR 值(8219、4322、4564、8678)在您之前的插入中显示为EMPNO 值,因此存在外键违规。这些“经理”必须作为“员工”插入,然后才能被外键引用。

    【讨论】:

      猜你喜欢
      • 2015-06-29
      • 2022-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多