想要在MYSQL的触发器中调用存储过程,但是IDE提示:

0A000 Not allowed to return a result set from a trigger

触发器代码如下:

DELIMITER $$

CREATE TRIGGER tri_ContactCompany_Insert AFTER INSERT

ON contactcompany FOR EACH ROW

# 创建时间:2019年6月27日 17:43:52

# 功能简介:表 contactcompany 的 INSERT 触发器

BEGIN

# 1. 新增行后修改本行的字段 categoryNames,以及对应的多行数据表 contactcompanyver

SELECT @sid := NEW.sid, @categories := NEW.categories

FROM NEW;

CALL usp_TriContactCompanyInsert(@sid,@categories);

END;$$

DELIMITER ;

触发器中调用的存储过程代码如下:

delimiter $$

# 下面的 `root`@`%`表示允许任意机器上通过用户root使用本存储过程

CREATE PROCEDURE `usp_TriContactCompanyInsert`(IN sid VARCHAR(50),IN categories VARCHAR(100))

# 创建时间:2019年6月27日 12:33:18

# 功能简介:表ContactCompany新增一行记录时,更新表contactcompanyver中的数据

# 将表 ContactCompany 字段 categories 中的值按照英文逗号分隔形成多行

BEGIN

# 0. 创建临时表保存中间数据

CREATE TEMPORARY TABLE category(sid VARCHAR(100),name VARCHAR(100)) CHARSET = utf8;

# 1. 删除历史数据

DELETE FROM contactcompanyver WHERE sid=sid;

# 2. 向表 contactcompanyver 写入多行数据

INSERT INTO category

SELECT t2.id,t2.name

FROM

(

SELECT

SUBSTRING_INDEX(SUBSTRING_INDEX(categories,',',help_topic_id+1),',',-1) AS categoryId

FROM

mysql.help_topic

WHERE

help_topic_id < LENGTH(categories)-LENGTH(REPLACE(categories,',',''))+1

) t1

LEFT OUTER JOIN contactcategory t2

ON t1.categoryId = t2.id

WHERE t2.name IS NOT NULL;

INSERT INTO contactcompanyver

(sid, category)

SELECT sid, name

FROM category;

# 3. 修改表 ContactCompany 中的字段 categoryNames 为名称串联

SELECT @categoryNames := group_concat(name)

FROM category;

update contactcompany SET categoryNames = @categoryNames WHERE sid=sid;

END;$$

上面给出的提示是说触发器中不能使用存储过程?

那么我想要在触发器中执行一系列逻辑,这些逻辑要写不少代码,又不想直接写在触发器中(这个触发器中以后可能还会追加其他逻辑)

我的目标是将一系列逻辑构成一个功能,然后在触发器中调用,要如何实现这个效果?

mysql在触发器中调用存储过程_mysql 触发器中调用存储过程相关推荐

  1. java mysql 触发器 存储过程_mysql 触发器 存储过程 java调用

    触发器和存储过程是为了提高SQL的运行效率. SQL语句先编译.后执行,而触发器与存储过程都会提前预编译完成,且只编译一次,供反复调用. 随着时代的进步,硬件与带宽的提升,触发器和存储过程提升效率并不 ...

  2. mysql触发器求属性和_MySQL触发器demo

    MySQL触发器示例 0写在之前: 最近在带浙大本科生的数据库系统的上机课,我手里拿到的教学文档非常的老,本人及不习惯老文档里的sql server的操作,就让大家安装的MySQL,这就有了个问题:M ...

  3. mysql 视图会走索引吗_MySQL视图索引与存储过程精析-阿里云开发者社区

    1.MySQL分页查询 1.1 limit函数: SELECT * FROM emp LIMIT 3 –只查询三条数据,其他忽略 1.2 select * from emp order by empn ...

  4. mysql in从数据库取数_MySQL数据库中 where in 用法详解

    本文主要向大家介绍了MySQL数据库中 where in 用法详解,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 这里分两种情况来介绍 WHERE column IN (valu ...

  5. mysql触发器 存储过程_mysql触发器和存储过程

    Mysql触发器和存储过程 1 / 9Mysql触发器 1.语法:命名规则 CREATE TRIGGER { BEFORE | AFTER } { INSERT | UPDATE | DELETE } ...

  6. mysql触发器发送curl请求_mysql触发器作用,好处和curl

    什么是触发器: 触发器是一种特殊的存储过程,它在试图更改触发器所保护的数据时自动执行. 触发器有什么作用: 1.安全性.可以基于数据库的值使用户具有操作数据库的某种权利. 2.审计.可以跟踪用户对数据 ...

  7. mysql触发器联立删除_mysql触发器删除实例1

    mysql>create table t1 (a1 int);mysql>create table t2 (a2 int , b2 char(5));其中t2.a2和t1.a1是对应的,a ...

  8. mysql触发器区分新增 修改_MySQL触发器 , 判断更新操作前后数据是否改变

    改动表为user , 改动后将部分信息写入cfq_tab表 1. 新增触发器 create TRIGGER cfq_on_user_add after insert on user for each ...

  9. MySQL存个人信息可以吗_mysql数据库中,在修改数据时能否保存操作人员的信息,比如姓名或id,如果能,怎么操作。...

    满意答案 yuliuyifei 2015.04.15 采纳率:50%    等级:8 已帮助:464人 您好,"用mysql作为数据库开发" 在数据枝姿访问这一层,必须是mysql ...

最新文章

  1. 浅谈使用openwave测试的几个注意项
  2. NA-NP-IE系列实验30:CHAP 认证
  3. buffer转int python_C/C++实战014:字符串转换及Python传参数组
  4. VTK:几何对象之QuadraticHexahedron
  5. 15-多容器复杂应用的部署
  6. 皖西学院计算机科学与技术分数线,2017年皖西学院艺术类本科专业录取分数线...
  7. php漏洞黑掉数据库,WDCPnbsp;add_user.php任意数据库添加任意用户漏洞分析
  8. meta 标签的详细使用
  9. DotNetBar for Windows Forms 11.8.0.8冰河之刃重打包版
  10. 判断是否是合法的IP地址
  11. 【代码优化】方法签名及参数检查
  12. 【快代理API】设置IP白名单
  13. 用友 U9好不好???
  14. css扫描动画效果demo示例(整理)
  15. ppt怎么加注解文字_ppt怎么添加备注文字?
  16. ibd 导入mysql_拷贝ibd实现MySQL的数据导入
  17. 2021-03-28
  18. java 中的惰性初始化_java惰性初始化
  19. 平面坐标, 极坐标 复数以及欧拉公式
  20. 测试用例设计方法与举例说明

热门文章

  1. Cygwin系列(一):Cygwin是什么
  2. java定时任务cron表达式每周执行一次的坑
  3. Vue项目在页面添加水印功能
  4. 听歌什么蓝牙耳机好用?听歌比较好的蓝牙耳机推荐
  5. Python len() 函数
  6. 游戏陪玩app开发,高并发系统如何设计?
  7. 链塔智库|区块链产业要闻及动态周报(2021年8月第3周)
  8. 无法显示计算机列表,W7系统Internet Explorer无法显示该页面
  9. Java实习生常规技术面试题每日十题Java基础(六)
  10. 高考计算机会考等级划分标准,高中学业水平考试等级是怎么划分的