我想上,做一個表中創建一個AFTER INSERT觸發器如下:光標在觸發取空值(二進制標識)
- 獲得光標的「用戶」基於一個簡單的地方約束。
- 迭代光標項並使用提取的ID插入或更新「last_syncs」。
這裏的觸發代碼:
CREATE DEFINER=`root`@`localhost` TRIGGER `court_groups_update_last_syncs_on_insert`
AFTER INSERT ON `court_groups` FOR EACH ROW
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE val INT;
DECLARE cur CURSOR FOR SELECT users.id FROM users where users.country_id = NEW.country_id;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done=1;
OPEN cur;
cur_loop: LOOP
IF done THEN
LEAVE cur_loop;
END IF;
FETCH cur INTO val;
INSERT INTO last_syncs (user_id, table_name) VALUES (val,'court_groups') ON DUPLICATE KEY UPDATE last_syncs.timestamp = NOW();
END LOOP;
CLOSE cur;
END
的問題是,光標獲取NULL值。
我檢查了以前對同一問題的答案,他們中的大多數人都說有兩個具有相同名稱的變量可能會導致問題,但在我的代碼中沒有這樣的東西。
請記住,數據庫中的所有ID都是二進制形式,這可能是問題嗎?
我正在使用MariaDB 10.1.13。
你是否真的需要一個光標?你可以發佈'用戶'表結構嗎? – wchiquito