关于mysql 触发器(insert,update)

2024-06-15 06:48

本文主要是介绍关于mysql 触发器(insert,update),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 当表A新增一条记录,表B则跟着添加这条记录

#删除当前触发器
drop TRIGGER IF EXISTS t_edw_event_add_cdr_3;
#创建触发器:当ccbill_cdr表新增一条记录,则在edw_event_add_cdr表添加这条记录
CREATE TRIGGER t_edw_event_add_cdr_3 after INSERT ON ccbill_cdr for EACH ROW
BEGIN
#声明代理商名称变量
DECLARE agentnameA VARCHAR(30);
#根据ccbill_cdr表的userid查询ccbill_ani表的代理商名称
select agentname into agentnameA from ccbill_ani where aniid = new.userid;
#添加记录到edw_event_add_cdr表
INSERT into edw_event_add_cdr (source_id,date_time,status,user_name,trademark,call_status,last_call_time) VALUES (new.callrecid,SYSDATE(),0,new.userid,agentnameA,0,new.endtime);
END

2. 当表A的一条数据发生改变,则把这条记录添加到表B

#删除当前触发器
drop TRIGGER IF EXISTS t_edw_event_chg_balance_2;
#创建触发器:当 ccbill_ani 表余额balance1字段值更新,则把更新数据的记录添加到 edw_event_chg_balance
CREATE TRIGGER t_edw_event_chg_balance_2 before UPDATE on ccbill_ani for EACH ROW
BEGIN
DECLARE newBalance DOUBLE;
DECLARE oldBalance DOUBLE;
set newBalance = new.balance1; #新纪录:已经更新过的余额
set oldBalance = old.balance1; #原记录:更新之前的余额
#select newBalance;
#select oldBalance;
#原来的余额 与 更新后的余额进行对比,如果某一条数据的余额不相等,则说明这条记录已更新,把这条记录添加到 edw_event_chg_balance
if newBalance != oldBalance THEN
  INSERT into edw_event_chg_balance set user_name = new.aniid,trademark = new.agentname,date_time = SYSDATE(),balance = newBalance,status = 0;
end if;
END

 

 

这篇关于关于mysql 触发器(insert,update)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1062724

相关文章

浅谈mysql的sql_mode可能会限制你的查询

《浅谈mysql的sql_mode可能会限制你的查询》本文主要介绍了浅谈mysql的sql_mode可能会限制你的查询,这个问题主要说明的是,我们写的sql查询语句违背了聚合函数groupby的规则... 目录场景:问题描述原因分析:解决方案:第一种:修改后,只有当前生效,若是mysql服务重启,就会失效;

MySQL多列IN查询的实现

《MySQL多列IN查询的实现》多列IN查询是一种强大的筛选工具,它允许通过多字段组合快速过滤数据,本文主要介绍了MySQL多列IN查询的实现,具有一定的参考价值,感兴趣的可以了解一下... 目录一、基础语法:多列 IN 的两种写法1. 直接值列表2. 子查询二、对比传统 OR 的写法三、性能分析与优化1.

MySQL新增字段后Java实体未更新的潜在问题与解决方案

《MySQL新增字段后Java实体未更新的潜在问题与解决方案》在Java+MySQL的开发中,我们通常使用ORM框架来映射数据库表与Java对象,但有时候,数据库表结构变更(如新增字段)后,开发人员可... 目录引言1. 问题背景:数据库与 Java 实体不同步1.1 常见场景1.2 示例代码2. 不同操作

mysql如何查看当前连接数

《mysql如何查看当前连接数》:本文主要介绍mysql如何查看当前连接数问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql查看当前连接数查看mysql数据库允许最大连接数总结mysql查看当前连接数查看当前连接数SHOW STATUS LIKE

通过Docker Compose部署MySQL的详细教程

《通过DockerCompose部署MySQL的详细教程》DockerCompose作为Docker官方的容器编排工具,为MySQL数据库部署带来了显著优势,下面小编就来为大家详细介绍一... 目录一、docker Compose 部署 mysql 的优势二、环境准备与基础配置2.1 项目目录结构2.2 基

Linux安装MySQL的教程

《Linux安装MySQL的教程》:本文主要介绍Linux安装MySQL的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux安装mysql1.Mysql官网2.我的存放路径3.解压mysql文件到当前目录4.重命名一下5.创建mysql用户组和用户并修

MySQL中慢SQL优化的不同方式介绍

《MySQL中慢SQL优化的不同方式介绍》慢SQL的优化,主要从两个方面考虑,SQL语句本身的优化,以及数据库设计的优化,下面小编就来给大家介绍一下有哪些方式可以优化慢SQL吧... 目录避免不必要的列分页优化索引优化JOIN 的优化排序优化UNION 优化慢 SQL 的优化,主要从两个方面考虑,SQL 语

Python实现将MySQL中所有表的数据都导出为CSV文件并压缩

《Python实现将MySQL中所有表的数据都导出为CSV文件并压缩》这篇文章主要为大家详细介绍了如何使用Python将MySQL数据库中所有表的数据都导出为CSV文件到一个目录,并压缩为zip文件到... python将mysql数据库中所有表的数据都导出为CSV文件到一个目录,并压缩为zip文件到另一个

如何解决mysql出现Incorrect string value for column ‘表项‘ at row 1错误问题

《如何解决mysql出现Incorrectstringvalueforcolumn‘表项‘atrow1错误问题》:本文主要介绍如何解决mysql出现Incorrectstringv... 目录mysql出现Incorrect string value for column ‘表项‘ at row 1错误报错

Mysql中深分页的五种常用方法整理

《Mysql中深分页的五种常用方法整理》在数据量非常大的情况下,深分页查询则变得很常见,这篇文章为大家整理了5个常用的方法,文中的示例代码讲解详细,大家可以根据自己的需求进行选择... 目录方案一:延迟关联 (Deferred Join)方案二:有序唯一键分页 (Cursor-based Paginatio