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事务的4种隔离级别

    深入理解MySQL事务的4种隔离级别

    本文主要介绍了MySQL事务的4种隔离级别,事务的4种隔离级别分别是读未提交,读已提交,可重复读和串行化,具有一定的参考价值,感兴趣的可以了解一下
    2022-04-04
  • MySQL中INSERT+SELECT的使用方式

    MySQL中INSERT+SELECT的使用方式

    MySQL的INSERT INTO SELECT FROM语句允许用户通过一条SQL语句实现从一个或多个表中查询数据并将结果插入到另一个表中,这种方式特别适用于需要将数据从一张表迁移到另一张表,或者基于多表查询结果创建新表的场景
    2024-10-10
  • MySQL(基于GTID方式)实现主从复制和单主复制详细教程

    MySQL(基于GTID方式)实现主从复制和单主复制详细教程

    在分布式数据库系统中,主从复制是实现高可用性和数据冗余的重要手段,基于GTID的复制模式可以提供更强的复制一致性和简化故障转移过程,本文将详细介绍如何配置单主复制的GTID模式,以便在MySQL数据库中实现稳定可靠的数据复制,需要的朋友可以参考下
    2024-07-07
  • 对MySQL日志操作的一些基本命令总结

    对MySQL日志操作的一些基本命令总结

    这篇文章主要介绍了对MySQL日志操作的一些基本命令总结,其中重点讲述了二进制日志文件的相关方面,需要的朋友可以参考下
    2015-11-11
  • MySQL一些常用高级SQL语句

    MySQL一些常用高级SQL语句

    对 MySQL 数据库的查询,除了基本的查询外,有时候需要对查询的结果集进行处理。例如只取 10 条数据、对查询结果进行排序或分组等等,今天就给大家分享MySQL一些常用高级SQL语句,感兴趣的朋友一起看看吧
    2021-07-07
  • Linux下安装与使用MySQL详细介绍

    Linux下安装与使用MySQL详细介绍

    以下是对在Linux下安装与使用MySQL进行了详细的介绍,需要的朋友可以过来参考下
    2013-08-08
  • mysql 8.0.16 压缩包安装配置方法图文教程

    mysql 8.0.16 压缩包安装配置方法图文教程

    这篇文章主要为大家详细介绍了mysql 8.0.16 压缩包安装配置方法图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05
  • MySQL 在线解密的实现

    MySQL 在线解密的实现

    本文主要介绍了MySQL在线解密的实现,通过使用MySQL提供的加密函数和自定义解密函数,我们可以在数据库中进行在线解密操作,下面就来具体介绍一下,感兴趣的可以了解一下
    2024-08-08
  • Mysql中select查询语句的执行方式

    Mysql中select查询语句的执行方式

    这篇文章主要介绍了Mysql中select查询语句的执行方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-06-06
  • mysql中datetime类型设置默认值方法

    mysql中datetime类型设置默认值方法

    下面小编就为大家分享一篇mysql中datetime类型设置默认值方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-02-02

最新评论