CREATE TABLE `ut` (
`id` int NOT NULL AUTO_INCREMENT,
`name` varchar(255) COLLATE utf8_bin DEFAULT NULL,
`age` int DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
CREATE DEFINER=`root`@`%` TRIGGER `tri_update_age` BEFORE UPDATE ON `ut` FOR EACH ROW BEGIN
declare cc INT;
select c.c into cc from c;
IF cc>=5 THEN
SIGNAL SQLSTATE '60001' SET MESSAGE_TEXT = 'too much update opertion!';
ELSE
update c set c.c=c.c+1;
END IF;
END;
CREATE TABLE `c` (
`c` int DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
其中,ut表为需要添加触发器的表,c表用于记录操作次数,以实现达到某个限定的次数条件,阻止继续操作本表的更新操作。
本例中,每次变更会在c表中增加c字段的值,一旦c值达到限制次数,触发器则会通过检查失败SIGNAL来阻止数据库操作。