Я имел в виду создание таблицы журнала, затем триггер для каждого возможного действия (вставка, обновление, удаление), чтобы заполнить ее, а затем процедуру анализа таблицы журнала, выполняющей любые соответствующие действия и удаляющей ее после завершения.
я есть стол
CREATE TABLE `seniority_master` (
`EMPNO` varchar(4) NOT NULL,
`NAME` varchar(40) DEFAULT NULL,
`GENDER` varchar(10) DEFAULT NULL,
`CATGRY` varchar(10) DEFAULT NULL,
`DOB` date DEFAULT NULL,
`DESG` varchar(40) DEFAULT NULL,
`DESGTYPE` varchar(100) DEFAULT NULL,
`SENIORITY` int(4) NOT NULL,
`EMPTYPE` varchar(45) DEFAULT NULL,
`TYPE` varchar(45) DEFAULT NULL,
`QUAL` varchar(200) DEFAULT NULL,
`BRANCH` varchar(30) DEFAULT NULL,
`DOJ` date DEFAULT NULL,
`DOCA` date DEFAULT NULL,
`PAYSCALE` varchar(45) DEFAULT NULL,
`OTHERDESC` varchar(45) DEFAULT NULL,
PRIMARY KEY (`EMPNO`,`SENIORITY`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `seniority_master` VALUES ('1389','MUNNA','Male','OBC','195,9-10-31','SENIOR RECORD SORTER (ASS-I)','',2,'STAFF','P03','4th','AGRA','1982-07-01','2007-07-01','12100-24500','');
INSERT INTO `seniority_master` VALUES ('1391','RAJENDER SINGH','MALE','UR','1965-07-09','AM (GENERAL)','GENERAL',40,'OFFICERS','H1','INTER ','AGRA','1984-06-22','2013-09-05','16400-40500','');
INSERT INTO `seniority_master` VALUES ('1392','MADAN GOPAL','Male','OBC','1966-07-04','SENIOR OFFICE MANAGERS-I (GENERAL)','',6,'STAFF','L1','10TH','AGRA','1984-08-17','2015-04-17','15600-30500','');
В приведенных выше данныхстаршинство (2,40,6) сотрудника будет меняться каждый раз, когда продвижение по службе происходит на основетип (Р03, H1, L1) сотрудника.
Что нам действительно нужно, это триггер, который обновляетстаршинство всех других сотрудников длятип когда один из сотрудников обновляется или вставляется или удаляется.
Пример: предположимEMPNO 4620 имеетстаршинство 5 итип A1, когда мы удаляемEMPNO в таблице seniority_master,старшинство ниже работников того жетип обновляться автоматически с приращением или уменьшением на основестаршинство, Аналогичная процедура для операций обновления и вставки выполнена.
Я могу создать триггеры AFTER INSERT и AFTER UPDATE для своей программы.
DELIMITER $
CREATE TRIGGER after_seniority_insert
AFTER INSERT ON seniority_master
FOR EACH ROW
BEGIN
INSERT INTO emp_positions
( empno,
position,
dop)
VALUES
( NEW.empno,
NEW.desg,
NEW.doca );
END$
DELIMITER ;
После обновления:
DELIMITER $
CREATE TRIGGER after_seniority_update
AFTER UPDATE ON seniority_master
FOR EACH ROW
BEGIN
IF (old.desg != new.desg &&
old.doca != new.doca) then
INSERT INTO emp_positions
( empno,
position,
dop)
VALUES
( NEW.empno,
NEW.desg,
NEW.doca );
END IF;
END$
DELIMITER ;
Помогите мне в приведенном выше сценарии создания триггера.