Я имел в виду создание таблицы журнала, затем триггер для каждого возможного действия (вставка, обновление, удаление), чтобы заполнить ее, а затем процедуру анализа таблицы журнала, выполняющей любые соответствующие действия и удаляющей ее после завершения.

я есть стол

    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 ;

Помогите мне в приведенном выше сценарии создания триггера.

 spt05 окт. 2017 г., 07:46
Я создал триггер для вставки после обновления в одну таблицу. DELIMITER $ CREATE TRIGGER after_seniority_update ПОСЛЕ ОБНОВЛЕНИЯ ON КАЧЕСТВО НАЧИНАЕТСЯ, КАК НАЧИНАЕТСЯ СТРАНИЦА IF (old.desg! = New.desg && old.doca! = New.doca), а затем INSERT INTO emp_positions (empno, position, dop) VALUES (NEW.empno, NEW.desg, NEW.doca); END IF; END $ DELIMITER;
 P.Salmon05 окт. 2017 г., 10:20
Я имел в виду создание таблицы журнала, затем триггер для каждого возможного действия (вставка, обновление, удаление), чтобы заполнить ее, а затем процедуру анализа таблицы журнала, выполняющей любые соответствующие действия и удаляющей ее после завершения.
 spt05 окт. 2017 г., 07:49
@ P.Salmon Как включить ведение журнала и периодически корректировать старшинство. Можете ли вы предоставить образец для этого.
 P.Salmon03 окт. 2017 г., 14:21
Вы не можете обновить таблицу, из-за которой сработал триггер. Я предлагаю вам регистрировать вставки, удалять и обновлять и периодически корректировать старшинство.
 spt05 окт. 2017 г., 06:52
Можете ли вы предоставить пример для регистрации и периодически обновлять сценарий

Ответы на вопрос(0)

Ваш ответ на вопрос