项目使用mysql数据库,有个系统消息功能需要一个触发器,当一个表插入数据时,向另外一个表插入多条数据。下面是完整示例代码,包括游标遍历,插入数据。
DELIMITER $$ USE `mydb`$$ DROP TRIGGER /*!50032 IF EXISTS */ `t_insertsystemmsg`$$ CREATE /*!50017 DEFINER = 'root'@'%' */ TRIGGER `t_insertsystemmsg` AFTER INSERT ON `MY_INFO_M` FOR EACH ROW BEGIN -- 需要定义接收游标数据的变量 DECLARE usercode1 VARCHAR (100); -- 遍历数据结束标志 DECLARE done INT DEFAULT FALSE ; -- 游标 DECLARE cur1 CURSOR FOR SELECT DISTINCT usercode FROM MY_USERINFO_M ; -- 将结束标志绑定到游标 DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE ; -- 打开游标 OPEN cur1 ; -- 开始循环 read_loop:LOOP -- 提取游标里的数据,这里只有一个,多个的话也一样; FETCH cur1 INTO usercode1 ; -- 声明结束的时候 IF done THEN LEAVE read_loop ; END IF ; -- 这里做你想做的循环的事件 INSERT INTO MY_SYSTEMMSG_T ( usercode, msg, msgtype, readflg, createdate, updatetime ) VALUES ( usercode1, CONCAT( new.apialias, '添加了,欢迎使用!' ), 1, '0', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP ) ; END LOOP ; -- 关闭游标 CLOSE cur1 ; END; $$ DELIMITER ;
一直用着mysql