当前位置: 首页 > 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签名认证之前,我们先模拟一个场景并且介绍…...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

Go 语言接口详解

Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...

论文笔记——相干体技术在裂缝预测中的应用研究

目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...

作为测试我们应该关注redis哪些方面

1、功能测试 数据结构操作:验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化:测试aof和aof持久化机制,确保数据在开启后正确恢复。 事务:检查事务的原子性和回滚机制。 发布订阅:确保消息正确传递。 2、性…...

适应性Java用于现代 API:REST、GraphQL 和事件驱动

在快速发展的软件开发领域,REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名,不断适应这些现代范式的需求。随着不断发展的生态系统,Java 在现代 API 方…...

论文阅读:LLM4Drive: A Survey of Large Language Models for Autonomous Driving

地址:LLM4Drive: A Survey of Large Language Models for Autonomous Driving 摘要翻译 自动驾驶技术作为推动交通和城市出行变革的催化剂,正从基于规则的系统向数据驱动策略转变。传统的模块化系统受限于级联模块间的累积误差和缺乏灵活性的预设规则。…...

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...

DAY 45 超大力王爱学Python

来自超大力王的友情提示:在用tensordoard的时候一定一定要用绝对位置,例如:tensorboard --logdir"D:\代码\archive (1)\runs\cifar10_mlp_experiment_2" 不然读取不了数据 知识点回顾: tensorboard的发展历史和原理tens…...

VSCode 没有添加Windows右键菜单

关键字:VSCode;Windows右键菜单;注册表。 文章目录 前言一、工程环境二、配置流程1.右键文件打开2.右键文件夹打开3.右键空白处打开文件夹 三、测试总结 前言 安装 VSCode 时没有注意,实际使用的时候发现 VSCode 在 Windows 菜单栏…...