mysql触发器中包含select语句问题

 更新时间:2023年08月30日 11:20:17   作者:某科学的南条  
这篇文章主要介绍了mysql触发器中包含select语句问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

mysql触发器中包含select语句

在mysql的触发器中,如果直接写select * from d_shop_ware 会报错

Not allowed to return a result set from a trigger

查找原因是

MYSQL5以后,不允许触发器返回任何结果,因此使用into @变量名,将结果赋值到变量中,用select调用即可

如下sql语句,

@flag_price_copy就可以进行值的判断

select b.flag_price into @flag_price_copy from `dst_111yao_doms`.`d_shop_ware` as a,`dst_111yao_doms`.`d_platform` as b 
where a.pfid = b.pfid and a.olshopid = NEW.olshopid and a.tfid = NEW.pfid and a.warecode = NEW.outter_id and a.skuid = NEW.sku;
if @flag_price_copy = '1' then
        ...

mysql触发器中通过SELECT语句给局部变量赋值

一条赋值变量引发的巨坑,自己备注一下,浪费了不少时间。

这边关键字,我都用了大写,方便观看。

好久之前记录的了,现优化了格式,更方便阅读

新增的实例

CREATE  TRIGGER  num_in  AFTER  INSERT  ON user_t
FOR   EACH   ROW  BEGIN
--变量的声明
DECLARE num INT(11) ;
--赋值
SET  num = (SELECT  COUNT(id)  FROM user_t) ;
     UPDATE  count_table SET count_num = num , update_time = SYSDATE() 
     WHERE table_name = "user_t" ;
END ;

删除的实例

CREATE  TRIGGER  account_delete_info  AFTER  DELETE  ON sys_account_info
FOR   EACH   ROW  BEGIN
DECLARE deleteid INT(11) ;
-- 保险起见
SET  deleteid = 0 ;
-- 直接获取不到,得先存一下  这是个小坑
SET  deleteid = OLD.id ;
-- 保险起见 ,确保在获得值的时候删除
IF deleteid != 0 THEN
   DELETE from sys_user_info  where sys_user_info.account_id = deleteid ;
END IF ;
END ;

删除触发器 

DROP TRIGGER account_delete_info ;

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 在linux服务器上配置mysql并开放3306端口的操作步骤

    在linux服务器上配置mysql并开放3306端口的操作步骤

    这篇文章主要介绍了在linux服务器上配置mysql并开放3306端口,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-09-09
  • mysql 维护常用命令

    mysql 维护常用命令

    需要维护mysql数据库的朋友可以参考下。
    2009-11-11
  • MySQL中NULL对索引的影响深入讲解

    MySQL中NULL对索引的影响深入讲解

    这篇文章主要给大家介绍了关于MySQL中NULL对索引的影响的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用MySQL具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-07-07
  • mysql数据库锁的产生原因及解决办法

    mysql数据库锁的产生原因及解决办法

    这篇文章主要介绍了mysql数据库锁的产生原因及解决办法,需要的朋友可以参考下
    2016-01-01
  • CenOS6.7下mysql 8.0.22 安装配置方法图文教程

    CenOS6.7下mysql 8.0.22 安装配置方法图文教程

    这篇文章主要为大家详细介绍了CenOS6.7下mysql 8.0.22 安装配置方法图文教程,文中安装步骤介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-11-11
  • mysql中的int(5)到底有是多长

    mysql中的int(5)到底有是多长

    这篇文章主要介绍了mysql中的int(5)到底有是多长,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • mysql SELECT语句去除某个字段的重复信息

    mysql SELECT语句去除某个字段的重复信息

    mysql SELECT语句去除某个字段的重复信息,需要的朋友可以收藏下。
    2010-04-04
  • MySQL忘记密码重置root密码纯步骤分享

    MySQL忘记密码重置root密码纯步骤分享

    这篇文章主要给大家分享了MySQL忘记密码重置root密码纯,文中通过示例代码介绍的非常详细,对大家的学习或者工作有一定的参考价值,需要的朋友们下面随着小编来一起学习吧
    2023-12-12
  • MySQL数据库数据删除操作详解

    MySQL数据库数据删除操作详解

    本文我们将要学习的是作为删除数据使用的 “DELETE” 语句,“DELETE” 语句是用来删除数据的,它不能用来删除数据表本身。删除数据表使用的是 “DROP” 语句,而 “DELETE” 的作用只是用来删除记录而已
    2022-08-08
  • 详细聊聊关于Mysql联合查询的那些事儿

    详细聊聊关于Mysql联合查询的那些事儿

    联合查询union将多次查询(多条select语句)的结果,在字段数相同的情况下,在记录的层次上进行拼接,这篇文章主要给大家介绍了关于Mysql联合查询的那些事儿,需要的朋友可以参考下
    2021-10-10

最新评论