MySQL触发器与if语句和变量

克里斯·希克

好的,因此我需要创建一个插入后触发器,该触发器需要使用if elseif和another elseif。if,elseif,elseif需要基于从其他3个数据库表获得的查询数据。我想知道是否有一种方法可以不必在开始时运行所有三个查询。

BEGIN
    SET @t3  = (SELECT team_id FROM team_trans WHERE key1 = NEW.trans_id LIMIT 1);
      SET @t2 = (SELECT team_id FROM team_assignments WHERE team_assignments.misc_id = NEW.STORE_ID AND team_assignments.type = 1);
      SET @t1 = (SELECT team_id FROM team_assignments WHERE team_assignments.misc_id = NEW.CUSTOMER_ID AND team_assignments.type = 0);
IF (@t3) THEN
               INSERT INTO team_trans (team_id, trans_id, type, misc_id) VALUES (@t3, NEW.id, 0, 1 );      
      ELSEIF (@t1) THEN
          INSERT INTO team_trans (team_id, trans_id, type, misc_id) VALUES (@t1, NEW.id, 0, 1 );
      ELSEIF (@t2) THEN
          INSERT INTO team_trans (team_id, trans_id, type, misc_id) VALUES (@t2, NEW.id, 0, 1 );
      END IF;
    END
小男孩

一个选项是:

...
BEGIN    
    /*
    SET @t3  = (SELECT team_id FROM team_trans WHERE key1 = NEW.trans_id LIMIT 1)//
    SET @t2 = (SELECT team_id FROM team_assignments WHERE team_assignments.misc_id = NEW.STORE_ID AND team_assignments.type = 1)//
    SET @t1 = (SELECT team_id FROM team_assignments WHERE team_assignments.misc_id = NEW.CUSTOMER_ID AND team_assignments.type = 0)//
    */    
    IF (SELECT @t3 := team_id
            FROM team_trans
            WHERE key1 = NEW.trans_id 
            LIMIT 1) THEN
        INSERT INTO team_trans (team_id, trans_id, type, misc_id)
        VALUES
        (@t3, NEW.id, 0, 1);      
    ELSEIF (SELECT @t1 := team_id
                    FROM team_assignments
                    WHERE team_assignments.misc_id = NEW.CUSTOMER_ID AND team_assignments.type = 0) THEN
        INSERT INTO team_trans (team_id, trans_id, type, misc_id)
        VALUES
        (@t1, NEW.id, 0, 1);
    ELSEIF (SELECT @t2 := team_id
                    FROM team_assignments
                    WHERE team_assignments.misc_id = NEW.STORE_ID AND team_assignments.type = 1) THEN
        INSERT INTO team_trans (team_id, trans_id, type, misc_id)
        VALUES
        (@t2, NEW.id, 0, 1);
    END IF;
END//
...

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MYSQL触发器中的CASE语句

来自分类Dev

MySQL触发器和SUM()

来自分类Dev

MYSQL:过程和触发器错误

来自分类Dev

MySQL触发器和SUM()

来自分类Dev

缺少等号和SQL语句忽略了Oracle触发器?

来自分类Dev

缺少等号和SQL语句忽略了Oracle触发器?

来自分类Dev

带有 WHEN 和 UPDATE 语句的 SQL 触发器

来自分类Dev

触发器IF语句中的MySQL语法错误?

来自分类Dev

如何在MYSQL触发器中使用IF语句?

来自分类Dev

在触发器mysql中添加if else语句时出错

来自分类Dev

在MySql中创建触发器时声明变量

来自分类Dev

MySQL Session变量在触发器中的功能

来自分类Dev

声明变量以在MySql错误中创建触发器

来自分类Dev

MySQL中的触发器和表锁定

来自分类Dev

MySQL触发器和事件在一起?

来自分类Dev

mysql触发器,旧和新之间的文本

来自分类Dev

获取MySQL触发器的列名和值

来自分类Dev

MySQL的触发器和事件在一起?

来自分类Dev

获取MySQL触发器的列名和值

来自分类Dev

MySQL触发器未编译和逻辑

来自分类Dev

MYSQL GUID触发器

来自分类Dev

MySQL触发器更新

来自分类Dev

MySQL的触发器问题

来自分类Dev

MYSQL多个触发器

来自分类Dev

触发器子句中的IF语句

来自分类Dev

更改触发器是否是DDL语句

来自分类Dev

从选择语句循环更新触发器

来自分类Dev

触发器中的IF语句语法

来自分类Dev

触发器子句中的IF语句