多行触发器

t98cgbkg  于 2021-06-21  发布在  Mysql
关注(0)|答案(0)|浏览(211)

我正在mysql中寻找一种方法,用触发器一次验证多行的输入。更具体地说,我想提交一个更新2+行的update语句(虽然每个单独的更新都会触发触发器,但整个update语句不会)。

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语句的示例如下:

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);

在本例中,update语句的和是1。但是,如果一次只更新一行,触发器将提前触发。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题