項目使用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 ;