MySQL存储过程与触发器

存储过程

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

为什么要使用存储过程
    1. 业务流程复杂
        业务复杂时,SQL语句相互依赖,顺序执行
    2. 频繁访问数据库
        每条SQL语句都需单独连接和访问数据库
    3. 先编译后执行
        SQL语句的执行需要先编译

创建存储过程
    CREATE PROCEDURE (
    [ [IN |OUT |INOUT ] 参数名 数据类型…])
    BEGIN
         DECLARE 变量 变量类型
    END
说明:
• '[ ]'内容不是必须的;
• in:表示入参;
• out:表示返回值;
• inout:表示即是入参又是返回值。
调用存储过程
    CALL 存储过程名 [参数名]
删除存储过程
    DROP PROCEDURE 存储过程名;

存储过程与函数的区别
    1. 语法
    关键字不同,存储过程是procedure;函数是function;
    2. 执行
    存储过程可以独立执行,函数必须依赖表达式的调用;
    3. 返回值
    存储过程可以定义多个返回结果;函数只有一个返回值;
    4. 功能
    存储过程可以做业务逻辑,函数不易做复杂的业务逻辑
存储过程的缺陷
    1. 移植性
    大多数关系型数据库的存储过程存在细微差异。兼容性极差
    2. 维护性
    存储过程的维护成本高,修改调试较为麻烦
    3. 协作性
    没有相关的版本控制或者IDE,团队中对于存储过程的使用大多是依赖文档

触发器

什么是触发器   

         一种存储过程,与表相关联,自动执行,而且是隐式执行
  触发器是数据库中针对数据仓库操作出发的特殊的存储过程
触发器的操作
    1. 查看所有的触发器
    SELECT * FROM information_schema.`TRIGGERS`
    WHERE trigger_schema = ‘库名'
    2. 删除触发器
    DROP TRIGGER 触发器名
创建触发器
    CREATE
     TRIGGER 数据库名.触发器名
        BEFORE/AFTER -- 触发顺序
        INSERT/UPDATE/DELETE – 触发事件
     ON 数据库.表名 -- 事件表
         FOR EACH ROW 
     BEGIN
         触发器内容 -- 事件出发后要写的语句
     END$$
触发器的查看
    查看所有的触发器:
    SELECT * FROM information_schema.`TRIGGERS`
    WHERE trigger_schema = ‘库名'
删除触发器:
    DROP TRIGGER 触发器名


存储过程和触发器的区别

    1. 语法:
    关键字不同,存储过程是procedure,触发器是trigger
    2. 执行:
    存储过程需要调用才执行,触发器自动执行
    3. 返回值:
    存储过程可以定义返回值,但是触发器没有返回值
    4. 功能:
    存储过程是一组特定功能的SQL语句,触发器则是SQL语句后执行,本身不影响原功能

相关推荐

  1. MySQL存储过程触发器

    2024-01-23 04:44:01       58 阅读
  2. MySQL存储过程触发器

    2024-01-23 04:44:01       66 阅读
  3. mysql触发器存储过程

    2024-01-23 04:44:01       44 阅读
  4. 数据库(mysql)-新手笔记(触发器,存储过程)

    2024-01-23 04:44:01       39 阅读
  5. MySQL的视图、存储过程触发器

    2024-01-23 04:44:01       33 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-23 04:44:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-23 04:44:01       101 阅读
  3. 在Django里面运行非项目文件

    2024-01-23 04:44:01       82 阅读
  4. Python语言-面向对象

    2024-01-23 04:44:01       91 阅读

热门阅读

  1. C++入门

    C++入门

    2024-01-23 04:44:01      47 阅读
  2. H5网页跳转支付宝进行支付

    2024-01-23 04:44:01       58 阅读
  3. 面向对象进阶--接口2

    2024-01-23 04:44:01       61 阅读
  4. 面试百问之mysql 数据库去重的方式有哪些?

    2024-01-23 04:44:01       52 阅读
  5. MYSQL慢查询优化,提升速度

    2024-01-23 04:44:01       50 阅读
  6. 遍历数组的列

    2024-01-23 04:44:01       55 阅读
  7. etcd安装

    2024-01-23 04:44:01       52 阅读