触发器 如下 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显示 主键重复的错误 请问 怎么处理 ,是不是 删除 之后 不能 直接添加?
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显示 主键重复的错误 请问 怎么处理 ,是不是 删除 之后 不能 直接添加?
(替换记录)
replace into 或者 忽略唯一索引一样的记录
insert ignore into
delete from 员工基本信息 where `员工基本信息`.ID=
(
SELECT
`员工信息管理明细`.ID
FROM
`员工信息管理明细`
WHERE
`员工信息管理明细`.`申请单号` = NEW.申请单号);
INSERT INTO
都换成 replace into 了 还是不行啊 一样的错误
duplicate entry 'XXXXXX' for key primary
部门编号 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红色为主键
你可以通过 show create table 员工基本信息; 得到。
duplicate entry 'XXXXXX' for key primary
`申请单号` 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 |
`申请单号` 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 (`申请单号`)