iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >mysql存储过程和触发器有啥具体区别
  • 579
分享到

mysql存储过程和触发器有啥具体区别

2024-04-02 19:04:59 579人浏览 泡泡鱼
摘要

本文主要给大家简单讲讲Mysql存储过程和触发器有啥具体区别,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望mysql存储过程和触发器有啥具体区别这篇文章可以

本文主要给大家简单讲讲Mysql存储过程和触发器有啥具体区别,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望mysql存储过程和触发器有啥具体区别这篇文章可以给大家带来一些实际帮助。                                                             

mysql存储过程和触发器有啥具体区别

存储过程:
是在大型数据库系统中,
一组为了完成特定功能的sql 语句集,
存储在数据库中,经过第一次编译后再次调用不需要再次编译,
用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。
存储过程是数据库中的一个重要对象

优点:
1允许模块化程序设计(创建一次多次使用)
2允许更快执行
3减少网络流量
4更好的安全机制

格式:

DELIMITER // 
CREATE PROCEDURE 储存名([ IN ,OUT ,INOUT ]?参数名?数据类形...) 
BEGIN 
SQL语句 
END // 
DELIMITER ;

调用过程:

用call 过程名( )

查看所有的存储过程show procedure status;
查看创建的存储过程show create procedure 过程名;
删除过程 drop procedure 过程名

In 表示参数从外部传入到里面使用(过程内部使用)
Out 表示参数从过程里边把数据保存到变量中,交给外部使用,所有传入的必须是变量 如果说传入的out变量本身在外部有数据,那么在进入过程之后,第一件事就是被清空,设为null
Inout 数据可以从外部传入到过程内部使用,同时内部操作之后,又会将数据返回给外部

触发器:

触发器是一种特殊类型的存储过程,它又不同于存储过程,
触发器主要是通过事件进行触发而被执行的,而存储过程可以通过存储过程名字而被直接调用。

作用:
1.可在写入数据表前,强制检验或转换数据
2.触发器发生错误时,异动的结果会被撤销

格式

DELIMITER //
Create trigger --触发器名字 触发时机 触发事件 on 表 for each 
row 
Begin 
--操作的内容 
End // 
DELIMITER ;

触发对象 :on 表 for each row 触发器绑定实质是表中的所有行,因此当每一行发生改变的时候,就会触发触发器
触发时机:每张表中对应的行都会有不同的状态,当SQL 指令发生的时候,
都会令行中的数据发生改变,每一行总会有两个状态。操作数据之前(before),操作数据(after)之后
触发事件:
Mysql中触发器针对的目标是数据发生改变,对应的操作只有(增,删,改)查询不发生数据的改变,
所以查询没有触发事件
注意事项:
一张表中,每一个触发器时机绑定的触发事件对应的触发器类型只能有一个;
一张表中只能有一个after insert 触发器 因此,一张表中最多的触发器只能有六个

创建存储过程

DELIMITER //
CREATE PROCEDURE addUser
(IN uCode VARCHAR(50),IN uName VARCHAR(20),IN uRole INT,IN sex INT,IN tel VARCHAR(30))
BEGIN
INSERT INTO smbms_user (userCode,userName,userRole,gender,phone)
VALUES(uCode,uName,uRole,sex,tel);
END//
DELIMITER //
查看存储过程 show procedure status;
<insert id="saveUser">
CALL addUser(#{userCode},#{userName},#{userRole},#{gender},#{phone})
</insert>
public int saveUser(
@Param("userCode") String userCode,
@Param("userName") String userName,
@Param("userRole") Integer userRole,
@Param("gender") Integer gender,
@Param("phone") String phone);
public List<User> findUserListPage(String queryUserName, 
Integer queryUserRole, 
Integer currentPageNo, Integer pageSzie);

public boolean saveUser(String userCode, String userName, Integer userRole,
Integer gender, String phone) {
SqlSession sqlSession = null;
int row = 0; // 受影响的行数
try {
sqlSession = mybatisUtil.createSqlSession();
row = sqlSession.getMapper(UserMapper.class).saveUser(userCode, userName, userRole, gender, phone);
// 提交事务
sqlSession.commit();
} catch (Exception e) {
if (sqlSession != null) {
sqlSession.rollback();
}
row = 0;
e.printStackTrace();
} finally {
MyBatisUtil.closeSqlSession(sqlSession);
}
if (row > 0) {
return true;
}
return false;
}

userService.saveUser("zhanGCuishan", "亚索", 1, 2, "15645678941");

创建触发器

创建两张表
create table my_Goods(
id int primary key auto_increment,
name varchar(20) not null,
inv int
)
create table my_orders(
id int primary key auto_increment,
goods_id int not null,
goods_num int not null)

insert into my_goods values(null,'手机',1000),(null,'电脑',500),(null,'游戏机',100);

DELIMITER //
CREATE TRIGGER a_i_o_t AFTER INSERT ON my_orders FOR EACH ROW
BEGIN
UPDATE my_goods SET inv =inv -new.goods_num WHERE id=new.goods_id;
END
//
DELIMITER ;

DELIMITER //
CREATE TRIGGER b_i_o_t BEFORE INSERT ON my_orders FOR EACH ROW 
BEGIN 
SELECT inv FROM my_goods WHERE id=new.goods_id INTO @inv;
IF @inv <new.goods_num THEN 
INSERT INTO xxx VALUES('xx');
END IF;
END 
//
DELIMITER //
 

测试 insert into my_orders values(null,3,5);

mysql存储过程和触发器有啥具体区别就先给大家讲到这里,对于其它相关问题大家想要了解的可以持续关注我们的数据库。我们的板块内容每天都会捕捉一些行业新闻及专业知识分享给大家的。

您可能感兴趣的文档:

--结束END--

本文标题: mysql存储过程和触发器有啥具体区别

本文链接: https://www.lsjlt.com/news/36261.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 数据库中存储过程和触发器有哪些区别
    这篇文章主要讲解了“数据库中存储过程和触发器有哪些区别”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“数据库中存储过程和触发器有哪些区别”吧!什么是触发器?触...
    99+
    2024-04-02
  • mysql存储过程和存储函数有哪些区别
    本文小编为大家详细介绍“mysql存储过程和存储函数有哪些区别”,内容详细,步骤清晰,细节处理妥当,希望这篇“mysql存储过程和存储函数有哪些区别”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起...
    99+
    2024-04-02
  • 怎么理解MySQL存储过程和触发器
    这期内容当中小编将会给大家带来有关怎么理解MySQL存储过程和触发器,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。存储过程(stored procedure SP)是My...
    99+
    2024-04-02
  • mysql存储过程和函数有什么区别
    存储过程和函数的区别:用途:存储过程用于复杂操作,函数用于单次计算。语法:存储过程使用 create procedure 创建,函数使用 create function 创建。输入输出:...
    99+
    2024-04-22
    mysql
  • mysql存储过程和函数的区别
    存储过程与函数的区别:存储过程可返回多个值或结果集,而函数仅返回单个标量值。存储过程通常在事务中执行,而函数可独立执行。存储过程具有副作用,而函数通常没有。存储过程可重用,但函数通常比存...
    99+
    2024-04-22
    mysql
  • MySQL-SQL存储过程/触发器详解(下)
    ♥️作者:小刘在C站 ♥️个人主页: 小刘主页  ♥️努力不一定有回报,但一定会有收获加油!一起努力,共赴美好人生! ♥️学习两年总结出的运维经验,以及思科模拟器全套网络实验教程。专栏:云计算技术 ♥️小刘私信可以随便问,只要会...
    99+
    2023-09-01
    sql mysql 数据库
  • 如何编写和执行MySQL存储过程和触发器
    编写和执行MySQL存储过程和触发器可以通过MySQL客户端或者通过SQL脚本来实现。以下是详细的步骤: 创建存储过程: DEL...
    99+
    2024-03-06
    MySQL
  • 在MySQL中如何使用存储过程和触发器
    在MySQL中,可以使用存储过程和触发器来实现一些特定的功能。下面分别介绍如何创建和使用存储过程和触发器: 存储过程: 存储过程...
    99+
    2024-04-09
    MySQL
  • MySQL中的视图、存储函数、存储过程、触发器分别是什么
    这篇文章主要讲解了“MySQL中的视图、存储函数、存储过程、触发器分别是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL中的视图、存储函数、存储过程、触发器分别是什么”吧!目录一...
    99+
    2023-06-20
  • 【MySQL进阶教程】视图/存储过程/触发器
    前言 本文为 【MySQL进阶教程】视图/存储过程/触发器 相关知识,下边将对视图,存储过程,存储函数,触发器等进行详尽介绍~ 📌博主主页:小新要变强 的主页 👉Ja...
    99+
    2023-09-18
    mysql 数据库 java
  • mysql转储/恢复存储过程和触发器指的是什么
    这篇文章将为大家详细讲解有关mysql转储/恢复存储过程和触发器指的是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。MySQL5.0首先介绍了存储过程和触发器。因此,...
    99+
    2024-04-02
  • mysql存储过程与存储函数的区别有哪些
    这篇文章主要讲解了“mysql存储过程与存储函数的区别有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql存储过程与存储函数的区别有哪些”吧! ...
    99+
    2024-04-02
  • 存储过程和函数有什么区别?
    以下是函数和过程之间的主要区别:函数 th>过程函数有一个返回类型并返回一个值。 td>过程没有返回类型。但它使用 OUT 参数返回值。您不能将函数与数据操作查询一起使用。函数中只允许选择查询。您可以在过程中使用 DML 查询,例如插入、更...
    99+
    2023-10-22
  • MySQL系列之五 视图、存储函数、存储过程、触发器
    目录系列教程一、视图 1、视图的创建 2、查看视图定义 3、删除视图 二、存储函数 1、系统函数 2、自定义函数(user-defined function:UDF) 三、存储过程 ...
    99+
    2024-04-02
  • MySQL数据库的触发器和存储过程实例分析
    这篇文章主要介绍“MySQL数据库的触发器和存储过程实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“MySQL数据库的触发器和存储过程实例分析”文章能帮助大家解决问题。一、实验目的掌握某主流D...
    99+
    2023-07-02
  • 如何在MySQL中使用PHP编写触发器和存储过程
    在MySQL中使用PHP编写触发器和存储过程可以通过以下步骤实现:1. 连接到MySQL数据库:使用PHP的`mysqli`或`PD...
    99+
    2023-10-10
    MySQL
  • 怎么在PostgreSQL中创建触发器和存储过程
    在PostgreSQL中创建触发器和存储过程需要使用SQL语句来实现。以下是创建触发器和存储过程的基本步骤: 创建存储过程: C...
    99+
    2024-03-12
    PostgreSQL
  • oracle存储过程和函数的区别
    oracle存储过程和函数的区别:1、返回值,存储过程没有返回值,函数具有返回值;2、使用方式, 存储过程使用CALL语句来调用,函数可以直接在SQL语句中使用;3、能力,存储过程更适合用于执行复杂的业务逻辑,函数可以作为SQL语句的一部分...
    99+
    2023-08-07
  • oracle中存储过程和函数有什么区别
    oracle 中存储过程和函数的主要区别:存储过程没有明确返回类型,而函数返回一个明确的类型值。存储过程必须显式处理异常,而函数中的异常可以传播给调用方。存储过程通常作为事务的一部分执行...
    99+
    2024-05-08
    oracle
  • Mysql存储过程、触发器、事件调度器怎么使用
    本文小编为大家详细介绍“Mysql存储过程、触发器、事件调度器怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Mysql存储过程、触发器、事件调度器怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。存...
    99+
    2023-06-28
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作