触发器  如下 CREATE TRIGGER  updataUserManager AFTER  UPDATE  ON 员工信息管理表
  FOR EACH ROW BEGIN  
         IF NEW.操作人ID='0' THEN
IF NEW.操作类型='添加' THEN
INSERT INTO 员工基本信息
                (`员工基本信息`.`ID`,
`员工基本信息`.`姓名`,
`员工基本信息`.`部门编号`,
`员工基本信息`.`职称`,
`员工基本信息`.`性别`,
`员工基本信息`.`籍贯`,
`员工基本信息`.`学历`,
`员工基本信息`.`毕业院校`,
`员工基本信息`.`入社日期`,
`员工基本信息`.`底薪`,
`员工基本信息`.`转正日期`,
`员工基本信息`.`合同到期日`,
`员工基本信息`.`户籍性质`,
`员工基本信息`.`户籍所在地`,
`员工基本信息`.`手机号`,
`员工基本信息`.`专业`,
`员工基本信息`.`通讯补贴`,
`员工基本信息`.`工龄津贴`,
`员工基本信息`.`岗位津贴`,
`员工基本信息`.`全勤奖`)
SELECT
`员工信息管理明细`.ID,
`员工信息管理明细`.`姓名`,
`员工信息管理明细`.`部门编号`,
`员工信息管理明细`.`职称`,
`员工信息管理明细`.`性别`,
`员工信息管理明细`.`籍贯`,
`员工信息管理明细`.`学历`,
`员工信息管理明细`.`毕业院校`,
`员工信息管理明细`.`入社日期`,
`员工信息管理明细`.`底薪`,
`员工信息管理明细`.`转正日期`,
`员工信息管理明细`.`合同到期日`,
`员工信息管理明细`.`户籍性质`,
`员工信息管理明细`.`户籍所在地`,
`员工信息管理明细`.`手机号`,
`员工信息管理明细`.`专业`,
`员工信息管理明细`.`通讯补贴`,
`员工信息管理明细`.`工龄津贴`,
`员工信息管理明细`.`岗位津贴`,
`员工信息管理明细`.`全勤奖`
FROM
`员工信息管理明细`
WHERE
`员工信息管理明细`.`申请单号` =  NEW.申请单号;
ELSEIF NEW.操作类型='修改' THEN
delete from 员工基本信息 where `员工基本信息`.ID=
(
SELECT
`员工信息管理明细`.ID
FROM
`员工信息管理明细`
WHERE
`员工信息管理明细`.`申请单号` =  NEW.申请单号);
INSERT INTO 员工基本信息
                (`员工基本信息`.`ID`,
`员工基本信息`.`姓名`,
`员工基本信息`.`部门编号`,
`员工基本信息`.`职称`,
`员工基本信息`.`性别`,
`员工基本信息`.`籍贯`,
`员工基本信息`.`学历`,
`员工基本信息`.`毕业院校`,
`员工基本信息`.`入社日期`,
`员工基本信息`.`底薪`,
`员工基本信息`.`转正日期`,
`员工基本信息`.`合同到期日`,
`员工基本信息`.`户籍性质`,
`员工基本信息`.`户籍所在地`,
`员工基本信息`.`手机号`,
`员工基本信息`.`专业`,
`员工基本信息`.`通讯补贴`,
`员工基本信息`.`工龄津贴`,
`员工基本信息`.`岗位津贴`,
`员工基本信息`.`全勤奖`)
SELECT
`员工信息管理明细`.ID,
`员工信息管理明细`.`姓名`,
`员工信息管理明细`.`部门编号`,
`员工信息管理明细`.`职称`,
`员工信息管理明细`.`性别`,
`员工信息管理明细`.`籍贯`,
`员工信息管理明细`.`学历`,
`员工信息管理明细`.`毕业院校`,
`员工信息管理明细`.`入社日期`,
`员工信息管理明细`.`底薪`,
`员工信息管理明细`.`转正日期`,
`员工信息管理明细`.`合同到期日`,
`员工信息管理明细`.`户籍性质`,
`员工信息管理明细`.`户籍所在地`,
`员工信息管理明细`.`手机号`,
`员工信息管理明细`.`专业`,
`员工信息管理明细`.`通讯补贴`,
`员工信息管理明细`.`工龄津贴`,
`员工信息管理明细`.`岗位津贴`,
`员工信息管理明细`.`全勤奖`
FROM
`员工信息管理明细`
WHERE
`员工信息管理明细`.`申请单号` =  NEW.申请单号; end if;
end if;
end显示 主键重复的错误  请问 怎么处理 ,是不是 删除 之后 不能 直接添加?

解决方案 »

  1.   

    jiijijiji救命 !!!!!!!!
      

  2.   

    INSERT INTO替换成
    (替换记录)
    replace into 或者 忽略唯一索引一样的记录
    insert ignore into
      

  3.   

    贴出你错误提示,贴出你的create table 语句。
      

  4.   

    我把 
    delete from 员工基本信息 where `员工基本信息`.ID=
    (
    SELECT
    `员工信息管理明细`.ID
    FROM
    `员工信息管理明细`
    WHERE
    `员工信息管理明细`.`申请单号` = NEW.申请单号); 
    INSERT INTO
    都换成  replace into  了  还是不行啊  一样的错误 
    duplicate  entry 'XXXXXX' for key primary
      

  5.   

    员工基本信息ID varchar 18姓名 varchar 10
    部门编号 varchar 3
    职称 varchar 10
    性别 varchar 5
    籍贯 varchar 10
    学历 varchar 5
    毕业院校 varchar 20
    入社日期 date 0
    底薪 double 0
    转正日期 date 0
    合同到期日 date 0
    户籍性质 varchar 10
    户籍所在地 varchar 30
    手机号 varchar 13
    专业 varchar 20
    通讯补贴 double 0
    工龄津贴 double 0
    岗位津贴 double 0
    全勤奖 double 0员工信息管理表 申请单号 varchar 12操作类型 varchar 5
    备注 varchar 10
    申请人ID varchar 18
    操作人ID varchar 18
    审核结果 varchar 10
    审批流类型 varchar 5
    员工信息管理表明细申请单号 varchar 12
    ID varchar 18
    姓名 varchar 10
    部门编号 varchar 3
    职称 varchar 10
    性别 varchar 5
    籍贯 varchar 10
    学历 varchar 5
    毕业院校 varchar 20
    入社日期 date 0
    底薪 double 0
    转正日期 date 0
    合同到期日 date 0
    户籍性质 varchar 5
    户籍所在地 varchar 30
    手机号 varchar 13
    专业 varchar 20
    通讯补贴 double 0
    工龄津贴 double 0
    岗位津贴 double 0
    全勤奖 double 0红色为主键
      

  6.   

    直接贴你的CREATE TABLE语句。
    你可以通过 show create table 员工基本信息;  得到。
      

  7.   

    这些 够不够    错误信息为
    duplicate entry 'XXXXXX' for key primary
      

  8.   

     员工基本信息 | CREATE TABLE `员工基本信息` (   `ID` varchar(18) NOT NULL,                     `姓名` varchar(10) NOT NULL,                   `部门编号` varchar(3) NOT NULL,                `职称` varchar(10) NOT NULL,                   `性别` varchar(5) NOT NULL,                    `籍贯` varchar(10) NOT NULL,                   `学历` varchar(5) NOT NULL,                    `毕业院校` varchar(20) NOT NULL,               `入社日期` date NOT NULL,                      `底薪` double DEFAULT NULL,                    `转正日期` date NOT NULL,                      `合同到期日` date DEFAULT NULL,                `户籍性质` varchar(10) DEFAULT NULL,           `户籍所在地` varchar(30) DEFAULT NULL,         `手机号` varchar(13) DEFAULT NULL,             `专业` varchar(20) DEFAULT NULL,               `通讯补贴` double DEFAULT NULL,                `工龄津贴` double DEFAULT NULL,                `岗位津贴` double DEFAULT NULL,                `全勤奖` double DEFAULT NULL,                  PRIMARY KEY (`ID`)                             ENGINE=InnoDB DEFAULT CHARSET=gb2312 |        
      

  9.   

    | 员工信息管理表 | CREATE TABLE `员工信息管理表` (
      `申请单号` varchar(12) NOT NULL,
      `操作类型` varchar(5) DEFAULT NULL,
      `备注` varchar(10) DEFAULT NULL,
      `申请人ID` varchar(18) DEFAULT NULL,
      `操作人ID` varchar(18) DEFAULT NULL,
      `审核结果` varchar(10) DEFAULT NULL,
      `审批流类型` varchar(5) DEFAULT NULL,
      PRIMARY KEY (`申请单号`)
    ) ENGINE=InnoDB DEFAULT CHARSET=gb2312 |
      

  10.   

    | 员工信息管理明细 | CREATE TABLE `员工信息管理明细` (
      `申请单号` varchar(12) NOT NULL DEFAULT '',
      `ID` varchar(18) NOT NULL,
      `姓名` varchar(10) NOT NULL,
      `部门编号` varchar(3) NOT NULL,
      `职称` varchar(10) NOT NULL,
      `性别` varchar(5) NOT NULL,
      `籍贯` varchar(10) NOT NULL,
      `学历` varchar(5) DEFAULT NULL,
      `毕业院校` varchar(20) NOT NULL,
      `入社日期` date NOT NULL,
      `底薪` double DEFAULT NULL,
      `转正日期` date NOT NULL,
      `合同到期日` date DEFAULT NULL,
      `户籍性质` varchar(5) DEFAULT NULL,
      `户籍所在地` varchar(30) DEFAULT NULL,
      `手机号` varchar(13) DEFAULT NULL,
      `专业` varchar(20) DEFAULT NULL,
      `通讯补贴` double DEFAULT NULL,
      `工龄津贴` double DEFAULT NULL,
      `岗位津贴` double DEFAULT NULL,
      `全勤奖` double DEFAULT NULL,
      PRIMARY KEY (`申请单号`)