我正在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。但是,如果一次只更新一行,触发器将提前触发。
暂无答案!
目前还没有任何答案,快来回答吧!