mysql在触发器中调用存储过程_mysql 触发器中调用存储过程
想要在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 触发器中调用存储过程相关推荐
- java mysql 触发器 存储过程_mysql 触发器 存储过程 java调用
触发器和存储过程是为了提高SQL的运行效率. SQL语句先编译.后执行,而触发器与存储过程都会提前预编译完成,且只编译一次,供反复调用. 随着时代的进步,硬件与带宽的提升,触发器和存储过程提升效率并不 ...
- mysql触发器求属性和_MySQL触发器demo
MySQL触发器示例 0写在之前: 最近在带浙大本科生的数据库系统的上机课,我手里拿到的教学文档非常的老,本人及不习惯老文档里的sql server的操作,就让大家安装的MySQL,这就有了个问题:M ...
- mysql 视图会走索引吗_MySQL视图索引与存储过程精析-阿里云开发者社区
1.MySQL分页查询 1.1 limit函数: SELECT * FROM emp LIMIT 3 –只查询三条数据,其他忽略 1.2 select * from emp order by empn ...
- mysql in从数据库取数_MySQL数据库中 where in 用法详解
本文主要向大家介绍了MySQL数据库中 where in 用法详解,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 这里分两种情况来介绍 WHERE column IN (valu ...
- mysql触发器 存储过程_mysql触发器和存储过程
Mysql触发器和存储过程 1 / 9Mysql触发器 1.语法:命名规则 CREATE TRIGGER { BEFORE | AFTER } { INSERT | UPDATE | DELETE } ...
- mysql触发器发送curl请求_mysql触发器作用,好处和curl
什么是触发器: 触发器是一种特殊的存储过程,它在试图更改触发器所保护的数据时自动执行. 触发器有什么作用: 1.安全性.可以基于数据库的值使用户具有操作数据库的某种权利. 2.审计.可以跟踪用户对数据 ...
- mysql触发器联立删除_mysql触发器删除实例1
mysql>create table t1 (a1 int);mysql>create table t2 (a2 int , b2 char(5));其中t2.a2和t1.a1是对应的,a ...
- mysql触发器区分新增 修改_MySQL触发器 , 判断更新操作前后数据是否改变
改动表为user , 改动后将部分信息写入cfq_tab表 1. 新增触发器 create TRIGGER cfq_on_user_add after insert on user for each ...
- MySQL存个人信息可以吗_mysql数据库中,在修改数据时能否保存操作人员的信息,比如姓名或id,如果能,怎么操作。...
满意答案 yuliuyifei 2015.04.15 采纳率:50% 等级:8 已帮助:464人 您好,"用mysql作为数据库开发" 在数据枝姿访问这一层,必须是mysql ...
最新文章
- 浅谈使用openwave测试的几个注意项
- NA-NP-IE系列实验30:CHAP 认证
- buffer转int python_C/C++实战014:字符串转换及Python传参数组
- VTK:几何对象之QuadraticHexahedron
- 15-多容器复杂应用的部署
- 皖西学院计算机科学与技术分数线,2017年皖西学院艺术类本科专业录取分数线...
- php漏洞黑掉数据库,WDCPnbsp;add_user.php任意数据库添加任意用户漏洞分析
- meta 标签的详细使用
- DotNetBar for Windows Forms 11.8.0.8冰河之刃重打包版
- 判断是否是合法的IP地址
- 【代码优化】方法签名及参数检查
- 【快代理API】设置IP白名单
- 用友 U9好不好???
- css扫描动画效果demo示例(整理)
- ppt怎么加注解文字_ppt怎么添加备注文字?
- ibd 导入mysql_拷贝ibd实现MySQL的数据导入
- 2021-03-28
- java 中的惰性初始化_java惰性初始化
- 平面坐标, 极坐标 复数以及欧拉公式
- 测试用例设计方法与举例说明