mysql - 遍历触发器中的临时表

标签 mysql loops triggers

我有一个包含临时表的触发器。现在我希望遍历临时表并在每一行上做一些事情。有没有一些简单的方法可以做到这一点?我已经用谷歌搜索了,但对于这样一个简单的任务来说,一切似乎都过于复杂了。

CREATE TRIGGER myTrigger AFTER UPDATE ON myTable
FOR EACH ROW
BEGIN
IF NEW.col <> OLD.col THEN
    DROP TEMPORARY TABLE IF EXISTS tmpTable;
    CREATE TEMPORARY TABLE IF NOT EXISTS tmpTable AS (my select statement);
    --For each row in tempTable--
        Do something
    --
    DROP TEMPORARY TABLE tmpTable;
END IF;
END

最佳答案

要有 rownumber 你可以这样做:

DROP TEMPORARY TABLE IF EXISTS tmpTable;
CREATE TEMPORARY TABLE IF NOT EXISTS tmpTable AS (
SELECT  l.*,
    @curRow := @curRow + 1 AS row_no
FROM    XXX_TABLE l
JOIN    (SELECT @curRow := 0) r);

使用它你可以使用WHILE循环:

DECLARE n INT DEFAULT 0;
DECLARE i INT DEFAULT 0;
SELECT COUNT(*) FROM tmpTable INTO n;
SET i=0;
WHILE i<n DO 
  SET i = i + 1;

  -- do sth WHERE row_no=i;

END WHILE;

关于mysql - 遍历触发器中的临时表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18077819/

相关文章:

mysql - 是否可以查询非不同的值?

MySQL 求和所选行

Mysql时区选择

python - 如何优雅地使用 Python 迭代器

影响用于查询的表的mysql删除触发器

php - 如何在从mysql数据库下载的csv中添加标题

java - 我的 Java 数组中的增量

Java大富翁游戏

mysql - 在单个过程中选择和更新

postgresql - 将 postgreSQL 触发器应用于数据库中的现有行