当前位置: 首页 > news >正文

mysql之触发器的使用

cr在这里插入图片描述一:创建goods表和orders表;

mysql> use  mydb16_tirgeer
Database changed
mysql> create table goods(-> gid char(8) primary key,-> name varchar(10),-> price decimal(8,2),->-> num int);
Query OK, 0 rows affected (0.03 sec)```powershell
mysql> create table orders(-> oid int primary key auto_increment,-> gid char(10) not null,-> name varchar(10),-> price decimal(8,2),-> onum int,-> otime date);
Query OK, 0 rows affected (0.01 sec)
二:导入商品记录;```powershell
mysql> insert into goods values('A0001','橡皮',2.5,100),('B0001','小谐本',2.8,210);
Query OK, 2 rows affected (0.01 sec)
Records: 2  Duplicates: 0  Warnings: 0mysql> insert into goods values('C0001','铅笔',1.2,120),('D0001','计算器',28,20);
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0mysql> select * from goods;
+-------+--------+-------+------+
| gid   | name   | price | num  |
+-------+--------+-------+------+
| A0001 | 橡皮   |  2.50 |  100 |
| B0001 | 小谐本 |  2.80 |  210 |
| C0001 | 铅笔   |  1.20 |  120 |
| D0001 | 计算器 | 28.00 |   20 |
+-------+--------+-------+------+
4 rows in set (0.00 sec)

三:在这里插入图片描述

mysql> create trigger orders_after_insert_trigger-> after insert on orders for each row-> update goods set num=num-new.onum-> where gid=new.gid;
Query OK, 0 rows affected (0.01 sec)mysql> insert into orders (gid,name,price,onum,otime) value('C0001','铅笔',1.2,80,now());
Query OK, 1 row affected, 1 warning (0.01 sec)mysql> select * from goods;
+-------+--------+-------+------+
| gid   | name   | price | num  |
+-------+--------+-------+------+
| A0001 | 橡皮   |  2.50 |  100 |
| B0001 | 小谐本 |  2.80 |  210 |
| C0001 | 铅笔   |  1.20 |   40 |
| D0001 | 计算器 | 28.00 |   20 |
+-------+--------+-------+------+
4 rows in set (0.00 sec)mysql> select * from orders;
+-----+-------+------+-------+------+------------+
| oid | gid   | name | price | onum | otime      |
+-----+-------+------+-------+------+------------+
|   1 | C0001 | 铅笔 |  1.20 |   80 | 2024-07-26 |
+-----+-------+------+-------+------+------------+
1 row in set (0.00 sec)

2.在这里插入图片描述

mysql> create trigger orders_after_delete_trigger-> after delete on orders for each row-> update goods set num=num+old.onum-> where gid = old.gid;
Query OK, 0 rows affected (0.00 sec)
mysql> delete From orders where gid='C0001';
Query OK, 1 row affected (0.00 sec)mysql> select * from goods;
+-------+--------+-------+------+
| gid   | name   | price | num  |
+-------+--------+-------+------+
| A0001 | 橡皮   |  2.50 |  100 |
| B0001 | 小谐本 |  2.80 |  210 |
| C0001 | 铅笔   |  1.20 |  120 |
| D0001 | 计算器 | 28.00 |   20 |
+-------+--------+-------+------+
4 rows in set (0.00 sec)mysql> select * from orders;
Empty set (0.00 sec)

3.在这里插入图片描述

mysql> create trigger orders_after_update_trigger-> after update on orders for each row-> update goods set num=num+(old.onum-new.onum)-> where gid=old.gid;
Query OK, 0 rows affected (0.01 sec)mysql> insert into orders (gid,name,price,onum,otime) value('C0001','铅笔',1.2,80,now());
Query OK, 1 row affected, 1 warning (0.00 sec)mysql> select * from orders;
+-----+-------+------+-------+------+------------+
| oid | gid   | name | price | onum | otime      |
+-----+-------+------+-------+------+------------+
|   2 | C0001 | 铅笔 |  1.20 |   80 | 2024-07-26 |
+-----+-------+------+-------+------+------------+
1 row in set (0.00 sec)mysql> select * from goods;
+-------+--------+-------+------+
| gid   | name   | price | num  |
+-------+--------+-------+------+
| A0001 | 橡皮   |  2.50 |  100 |
| B0001 | 小谐本 |  2.80 |  210 |
| C0001 | 铅笔   |  1.20 |   40 |
| D0001 | 计算器 | 28.00 |   20 |
+-------+--------+-------+------+
4 rows in set (0.00 sec)mysql> update orders set onum=35 where gid = 'C0001';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0mysql> select * from orders;
+-----+-------+------+-------+------+------------+
| oid | gid   | name | price | onum | otime      |
+-----+-------+------+-------+------+------------+
|   2 | C0001 | 铅笔 |  1.20 |   35 | 2024-07-26 |
+-----+-------+------+-------+------+------------+
1 row in set (0.00 sec)mysql> select  * from  goods;
+-------+--------+-------+------+
| gid   | name   | price | num  |
+-------+--------+-------+------+
| A0001 | 橡皮   |  2.50 |  100 |
| B0001 | 小谐本 |  2.80 |  210 |
| C0001 | 铅笔   |  1.20 |   85 |
| D0001 | 计算器 | 28.00 |   20 |
+-------+--------+-------+------+
4 rows in set (0.00 sec)

在这里插入图片描述

mysql> use mydb7_openlab;
Database changed
mysql> show tables;
+-------------------------+
| Tables_in_mydb7_openlab |
+-------------------------+
| dept                    |
| emp                     |
| emp_new                 |
| user                    |
+-------------------------+
4 rows in set (0.00 sec)delimiter // 
mysql> create  procedure s1()-> begin->          select name,incoming  from emp_new;-> end //
Query OK, 0 rows affected (0.01 sec)mysql> delimiter ;
mysql> call s1();
+------+----------+
| name | incoming |
+------+----------+
| 张三 |     4000 |
| 李四 |     3500 |
| 王五 |     2000 |
| 赵六 |     7500 |
| 荣七 |     8500 |
| 牛八 |     7300 |
+------+----------+
6 rows in set (0.00 sec)Query OK, 0 rows affected (0.02 sec)mysql>

在这里插入图片描述

mysql> create procedure s2(in_name varchar(11),out out_age int)-> begin-> select age into out_age from emp_new where name=in_name;-> end //
Query OK, 0 rows affected (0.00 sec)mysql> call s2('王五',@age);-> //
Query OK, 1 row affected (0.00 sec)mysql> delimiter ;
mysql> select @age;
+------+
| @age |
+------+
|   24 |
+------+
1 row in set (0.00 sec)

在这里插入图片描述

mysql> create procedure s3(in in_dept int , out avg_sal float)-> begin->          select avg(incoming) into avg_sal from emp_new where dept2=in_dept;-> end //
Query OK, 0 rows affected (0.00 sec)mysql> call s3(101,@avg_sal)//
Query OK, 1 row affected (0.00 sec)mysql> delimiter ;
mysql> select @avg_sal;
+-------------------+
| @avg_sal          |
+-------------------+
| 3166.666748046875 |
+-------------------+
1 row in set (0.00 sec)

相关文章:

mysql之触发器的使用

cr一:创建goods表和orders表; mysql> use mydb16_tirgeer Database changed mysql> create table goods(-> gid char(8) primary key,-> name varchar(10),-> price decimal(8,2),->-> num int); Query OK, 0 rows affected (0.0…...

使用Java和Hazelcast实现分布式数据存储

使用Java和Hazelcast实现分布式数据存储 大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿! 在分布式系统中,实现高效的数据存储和管理是非常重要的。Hazelcast作为一个内存数据网格(IMDG)&…...

Hi3751V560_SELinux

Hi3751V560_SELinux setenforce Enforcing setenforce Permissive(或“setenforce 0”) getenforce V560:demo本身的: [ 13.765161] type=1400 audit(1628821512.905:4): avc: denied { read } for pid=1926 comm="system_server" name="ifindex" d…...

邮件安全篇:邮件反垃圾系统运作机制简介

1. 什么是邮件反垃圾系统? 邮件反垃圾系统是一种专门设计用于检测、过滤和阻止垃圾邮件的技术解决方案。用于保护用户的邮箱免受未经请求的商业广告、诈骗信息、恶意软件、钓鱼攻击和其他非用户意愿接收的电子邮件的侵扰。 反垃圾系统的常见部署形式 2. 邮件反垃圾…...

LoRaWAN设备的两种入网方式(ABP和OTAA)

目录 一、OTAA 1、名词解释 2、入网流程 二、ABP 三、两种入网方式的比较 一、OTAA 1、名词解释 (1)AppEUI:64位(8字节)的唯一标识符,用于标识特定的应用程序或组织(如果用的是chirpstac…...

【Rust光年纪】极致性能与灵活选择:Rust语言数学优化库详解

Rust语言中的数学优化:六大利器汇总 前言 在当今信息时代,数据处理和数学优化成为了各行各业中不可或缺的重要环节。为了满足对高效、快速计算的需求,Rust语言逐渐成为了许多开发者的首选,因其性能优越、并发安全等特点。本文将…...

机器学习 | 回归算法原理——最小二乘法

Hi,大家好,我是半亩花海。很早便想学习并总结一本很喜欢的机器学习图书——立石贤吾的《白话机器学习的数学》,可谓通俗易懂,清晰形象。那就在此分享并作为学习笔记来记录我的学习过程吧!本章的回归算法原理基于《基于…...

.NET Core 中的字符串压缩方法

字符串压缩的概念 字符串压缩通常指的是通过算法减少字符串表示所需的数据量,同时保持字符串的原始信息或能够无损地恢复原始字符串。这种压缩可以是针对文本数据的特定算法,也可以是更通用的数据压缩算法。 .NET Core 中的字符串压缩方法 使用数据压…...

SQL 基础知识

SQL(结构化查询语言)是一种用于管理和操作关系数据库的标准编程语言。以下是一些 SQL 的基础知识: 基本概念 数据库(Database): 存储和管理数据的容器。一个数据库可以包含多个表。 表(Table&…...

【数据结构初阶】单链表经典算法题十二道——得道飞升(上篇)

目录 1、移除元素 2、反转链表 3、链表的中间节点 4、合并两个有序链表 Relaxing Time!!! ———————————————— 天气之子幻 ———————————————— 1、移除元素 思路: 创建一个新链表&#xff0…...

Python爬虫技术 第16节 XPath

XPath是一种在XML文档中查找信息的语言,尽管XML和HTML在语法上有区别,但XPath同样适用于HTML文档的解析,尤其是在使用如lxml这样的库时。XPath提供了一种强大的方法来定位和提取XML/HTML文档中的元素和属性。 XPath基础 XPath表达式由路径表…...

本地部署,Whisper: 开源语音识别模型

目录 简介 特点 应用 使用方法 总结 GitHub - openai/whisper: Robust Speech Recognition via Large-Scale Weak SupervisionRobust Speech Recognition via Large-Scale Weak Supervision - openai/whisperhttps://github.com/openai/whisper 简介 Whisper 是一个由 O…...

history,hash缓存那些事

vue-router 中的 createWebHistory,createWebHashHistory两种模式 createWebHistory 是基于 window.history 对象是HTML5提供的用于维护当前标签页浏览历史的对象,主要功能是前进后退和在不刷新页面的情况下,修改地址栏里的URL地址。histor…...

Spring Boot的Web开发

目录 Spring Boot的Web开发 1.静态资源映射规则 第一种静态资源映射规则 2.enjoy模板引擎 3.springMVC 3.1请求处理 RequestMapping DeleteMapping 删除 PutMapping 修改 GetMapping 查询 PostMapping 新增 3.2参数绑定 一.支持数据类型: 3.3常用注解 一.Request…...

Spark 解析嵌套的 JSON 文件

1、什么是嵌套的JSON文件? 嵌套的JSON文件是指文件中包含了嵌套的JSON对象或数组。例如,以下是一个嵌套的JSON文件的示例: {"name": "John","age": 30,"address": {"street": "123…...

VMware虚拟机中CentOS7自定义ip地址并且固定ip

配置固定ip(虚拟机) 前提:虚拟机网络配置成,自定义网络并选择VMnet8(NAT 模式) 操作(如下图):点击虚拟机–》设置–》–》硬件–》网络适配器–》自定义:特定虚拟网络–》选择:VMnet8(NAT 模式) 虚拟机网络设置 需要记…...

CCS(Code Composer Studio 10.4.0)编译软件中文乱码怎么解决

如果是所有文件都出现了中文乱码这时建议直接在窗口首选项中修改:选择"Window" -> "Preferences",找到"General" -> "Workspace",将"Text file encoding"选项设置为"Other&quo…...

Flutter 3 完全支持网页端

Flutter 3 可以用于开发网页端应用。自 Flutter 2.0 起,Flutter 就已经支持 Web 平台,并且在 Flutter 3 中得到了进一步的改进和优化。以下是使用 Flutter 3 开发网页端的一些优势和特点: Flutter 3 开发网页端的优势: 跨平台一致…...

vue.js入门

目录 一. 框架概述 二. vue常用命令 2.1 插值表达式 2.2 v-text 2.3 v-html 2.4 v-on 2.5 v-model 2.6 v-show 2.7 v-if 2.8 v-else 2.9 v-bind 2.10 v-for 三. vue生命周期函数 目录 一. 框架概述 二. vue常用命令 2.1 插值表达式 2.2 v-text 2.3 v-html 2…...

API签名认证

前言(项目背景): 这个API签名认证是API开放平台得一个重要环节,我们知道,这个API开发平台,用处就是给客户去调用现成得接口来完成某些事情得。 在讲API签名认证之前,我们先模拟一个场景并且介绍…...

基于SSM框架的传统服饰文化平台体验(10034)

有需要的同学,源代码和配套文档领取,加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码(前后端源代码SQL脚本)配套文档(LWPPT开题报告/任务书)远程调试控屏包运行一键启动项目&…...

番茄小说下载器终极指南:如何轻松构建个人离线图书馆

番茄小说下载器终极指南:如何轻松构建个人离线图书馆 【免费下载链接】Tomato-Novel-Downloader 番茄小说下载器不精简版 项目地址: https://gitcode.com/gh_mirrors/to/Tomato-Novel-Downloader 你是否经常在地铁、高铁或飞机上想要阅读番茄小说&#xff0c…...

老旧主板救星记:手把手教你诊断华硕H81M-CT的USB过流保护故障

老旧主板救星记:手把手教你诊断华硕H81M-CT的USB过流保护故障 当陪伴多年的老电脑突然开始"闹脾气",每次开机15秒就自动关机,屏幕上还跳出"USB Device over current status Detected"的警告时,先别急着把它送…...

掌握Superpowers Skills

Superpowers 是一套面向开发过程的插件化技能系统,旨在帮助个人开发者与团队更高效地完成从需求探索到代码交付的全流程。其内置的十余项技能覆盖了软件开发生命周期的各个关键节点,并且可以按照自然的工作流顺序进行分组与调用。 本文将基于 Superpower…...

为什么92%的AI音频项目在ElevenLabs声音库选型阶段就失败?——资深AI音频架构师12年踩坑复盘

更多请点击: https://intelliparadigm.com 第一章:为什么92%的AI音频项目在ElevenLabs声音库选型阶段就失败? ElevenLabs 的声音库看似丰富——超 500 个语音模型、多语言支持、情感调节滑块一应俱全,但真实项目落地中&#xff0…...

oracle 大表(1亿以上)迁移笔记一

作者:蓝鸟 1974 CSDN:https://blog.csdn.net/weixin_42767242 关键字 大表迁移、存储过程批量归档、定时 JOB、索引维护、统计信息收集、NOLOGGING、BULK COLLECT、FORALL 一、场景概述 在医院 HIS/EMR 系统中,业务流水表、病历明细表数据增长极快,单表数据量轻松突破…...

实测Taotoken在低功耗arm7设备上的API调用延迟与稳定性表现

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 实测Taotoken在低功耗arm7设备上的API调用延迟与稳定性表现 1. 测试背景与目的 在边缘计算或资源受限的嵌入式场景中,…...

如何3分钟完成漫画翻译:BallonsTranslator AI智能工具完全指南

如何3分钟完成漫画翻译:BallonsTranslator AI智能工具完全指南 【免费下载链接】BallonsTranslator 深度学习辅助漫画翻译工具, 支持一键机翻和简单的图像/文本编辑 | Yet another computer-aided comic/manga translation tool powered by deeplearning 项目地址…...

技能与代码审计融合实践:构建安全开发思维与实战靶场

1. 项目概述:技能与代码审计的融合实践最近在和一些做安全开发的朋友聊天,大家普遍有个感受:现在单纯会写代码,或者单纯懂点安全皮毛,已经越来越不够用了。一个功能上线,开发觉得逻辑完美,但安全…...

鲲鹏超节点系统应用创新竞争力

鲲鹏超节点通过灵衢互联,打破传统的服务器边界,实现以数据为中心的全互联架构,为AI infra而生,具备大带宽、低时延、统一编址、内存语义、内存借用、内存共享、对等互联等关键能力,灵衢软件全面开源开放,让…...