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 ;

总结

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

相关文章

  • Mysql的Table doesn't exist问题及解决

    Mysql的Table doesn't exist问题及解决

    这篇文章主要介绍了Mysql的Table doesn't exist问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • SQL INSERT及批量的几种方式总结

    SQL INSERT及批量的几种方式总结

    SQL提供了INSERT语句,用于将一行或多行插入表中,下面这篇文章主要给大家介绍了关于SQL INSERT及批量的几种方式,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-02-02
  • SpringBoot中mysql的驱动依赖问题小结

    SpringBoot中mysql的驱动依赖问题小结

    这篇文章主要介绍了SpringBoot中mysql的驱动依赖问题,本文通过图文示例代码相结合给大家介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • MySQL的索引你了解吗

    MySQL的索引你了解吗

    这篇文章主要为大家详细介绍了MySQL的索引,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • Mysql什么情况下不会命中索引

    Mysql什么情况下不会命中索引

    在某些情况下,即使存在索引,查询也可能不会使用到索引,从而导致查询效率降低,下面就来介绍一下Mysql什么情况下不会命中索引,感兴趣的可以了解一下
    2025-04-04
  • PostgreSQL 正则表达式 常用函数的总结

    PostgreSQL 正则表达式 常用函数的总结

    这篇文章主要介绍了PostgreSQL 正则表达式 常用函数的总结的相关资料,对那些需要进行复杂数据处理的程序来说,正则表达式无疑是一个非常有用的工具,这里就介绍下如何使用,需要的朋友可以参考下
    2017-08-08
  • mysql中mvcc的具体使用

    mysql中mvcc的具体使用

    MVCC多版本并发控制是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问,本文主要介绍了mysql中mvcc的具体使用,感兴趣的可以了解一下
    2024-09-09
  • 快速解决MySQL服务无法启动显示:系统出错,发生系统错误1067, 进程意外终止的两种方法

    快速解决MySQL服务无法启动显示:系统出错,发生系统错误1067, 进程意外终止的两种方法

    本人因为phpstudy的MySQL数据库与我的电脑上的MySQL数据库发生冲突,当我将MySQL服务器的服务名从MySQL改为MySQL5后,启动MySQL5服务后就报错:系统出错, 发生系统错误 1067, 进程意外终止,现在将这个解决方法分享给大家,需要的朋友可以参考下
    2024-06-06
  • mysql 5.7.23 安装配置方法图文教程

    mysql 5.7.23 安装配置方法图文教程

    这篇文章主要为大家详细介绍了mysql 5.7.23安装配置方法图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-09-09
  • MySQL 表的垂直拆分和水平拆分

    MySQL 表的垂直拆分和水平拆分

    这篇文章主要介绍了MySQL 表的垂直拆分和水平拆分,文中讲解非常细致,帮助大家更好的理解和学习MySQL,感兴趣的朋友可以了解下
    2020-07-07

最新评论