MySQL - многорядный триггер - PullRequest
       4

MySQL - многорядный триггер

0 голосов
/ 17 сентября 2018

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

delimiter //

CREATE TRIGGER checkdistsum
AFTER UPDATE ON tests_detail

for each row

BEGIN

SET @totaldist = (select count(*) from (select sum(td.DISTRIBUTION_PCT) as
 total
from models m,.tests t,tests_detail td
where m.model_id = td.MODEL_ID and t.TEST_ID = td.TEST_ID
group by  t.test_id having total != 1)  as totalquery);

IF @totaldist > 0 THEN signal sqlstate '45000';

END IF;

END;//

Триггер сработает, значение запроса не равно 1. Но я хочу, чтобы он срабатывал только после выполнения всего оператора update.

Примером оператора обновления будет:

UPDATE tests_detail
SET DISTRIBUTION_PCT = (CASE 
  WHEN MODEL_ID = 3 THEN .40
  WHEN MODEL_ID = 2 THEN .60
  ELSE DISTRIBUTION_PCT 
END)
WHERE MODEL_ID IN(2,3);

В этом случае - сумма оператора обновления будет равна 1. Однако, если обновляется только одна строка за раз,курок сработает преждевременно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...