第8章-存储过程和触发器.pptVIP

  • 3
  • 0
  • 约2.77千字
  • 约 24页
  • 2018-12-18 发布于广东
  • 举报
第8章 存储过程与触发器 8.1 存储过程 8.1.1存储过程的概念 存储过程是一种数据库对象,它是由一组预先编辑好的SQL语句组成,为了实现某个特定的任务,将一组预编译的SQL语句以一个存储单元的形式存储在数据库服务器上,由用户直接调用执行。存储过程在第一次执行时进行编译,然后将编译好的代码保存在高速缓存中便于以后调用,实现了一次编译,多次调用,提高了代码的执行效率。 8.1.2创建存储过程 创建存储过程时,需要指定存储过程的名称和参数的名称。创建存储过程的语法格式如下。 create procedure 存储过程名称(in 参数1 数据类型,out 参数2 数据类型,…) [存储过程选项] begin 存储过程语句块; end; 8.1.3调用存储过程 存储过程经过调用后才将处理结果返回,调用存储过程须使用call关键字。 (1) 调用无参数存储过程 如果存储过程在定义时没有任何参数,在调用时也不需要传递具体的值给参数。例如,调用存储过程student_count_proc的MySQL的命令如下,执行结果如图8-1所示。 call student_count_proc( ); 触发器主要用于监视某个表的insert、update以及delete等更新操作,这些操作可以分别激活该表的insert、update或者delete类型的触发程序运行,从而实现数据的自动维护。 8.2 触发器 8.2.1 触发器概述 8.2.2触发器的优点 触发器主要用于监视某个表的insert、update以及delete等更新操作,这些操作可以分别激活该表的insert、update或者delete类型的触发程序运行,从而实现数据的自动维护,可以保护数据库完整性,主要有以下优点: (1)触发器是自动执行的,它可以通过数据库中的相关表实现级联更新,实现多个表之间数据的一致性和完整性。比如对一张表中的数据做了修改操作,那么与这些数据相关联的其他表的数据也会被修改。 (2)触发器可以实现比CHECK 约束更为复杂的数据完整性约束。例如,在choose数据库中,如果有新学生报到注册,需要向student表中添加一条记录,当输入class_no(班级代码)时,必须先检查classes(班级)表中是否存在该班级,这只能通过触发器来实现。 (3)触发器也可以评估数据修改前后的表状态,并根据其差异采取对策。 使用create trigger语句可以创建一个触发器,语法格式如下。 create trigger 触发器名 触发时间 触发事件 on 表名 for each row begin 触发程序 end 8.2.3 触发器创建 MySQL的触发事件有三种: insert:将新记录插入表时激活触发程序,例如通过insert、load data和replace语句,可以激活触发程序运行。 MySQL的触发事件有三种: update:更改某一行记录时激活触发程序,例如通过update语句,可以激活触发程序运行。 delete:从表中删除某一行记录时激活触发程序,例如通过delete和replace语句,可以激活触发程序运行。 触发器的触发时间有两种:before与after。 before表示在触发事件发生之前执行触发程序。 after表示在触发事件发生之后执行触发器。因此严格意义上讲一个数据库表最多可以设置六种类型的触发器。 for each row表示行级触发器。 目前MySQL仅支持行级触发器,不支持语句级别的触发器(例如create table等语句)。for each row表示更新(insert、update或者delete)操作影响的每一条记录都会执行一次触发程序。 触发程序中可以使用old关键字与new关键字。 当向表插入新记录时,在触发程序中可以使用new关键字表示新记录,当需要访问新记录的某个字段值时,可以使用“new.字段名”的方式访问。 触发程序中可以使用old关键字与new关键字。 当从表中删除某条旧记录时,在触发程序中可以使用old关键字表示旧记录,当需要访问旧记录的某个字段值时,可以使用“old.字段名”的方式访问。 触发程序中可以使用old关键字与new关键字。 当修改表的某条记录时,在触发程序中可以使用old关键字表示修改前的旧记录、使用new关键字表示修改后的新记录。当需要访问旧记录的某个字段值时,可以使用“old.字段名”的方式访问。当需要访问修改后的新记录的某个字段值时,可以使用“new.字段名”的方式访问。 8.2.5触发器的使用 1、使用触发器删除数据 使用触发器可以实现多个表中相关联的数据同时删除,以保证数据的完整性。例如

文档评论(0)

1亿VIP精品文档

相关文档