程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MYSQL入門知識 >> MYSQL觸發器游標遍歷示例

MYSQL觸發器游標遍歷示例

編輯:MYSQL入門知識
 

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

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved