MySQL数据库项目化教程 项目八 触发器.pptxVIP

  • 3
  • 0
  • 约4.56千字
  • 约 20页
  • 2023-08-08 发布于海南
  • 举报

MySQL数据库项目化教程 项目八 触发器.pptx

项目八 触发器 目录/Contents0102创建触发器管理触发器 学习目标学习创建、查看、删除触发器的基本语法格式;学习使用INSERT、UPDATE和DELETE语句激活触发器的方法。知识目标掌握创建不同类型触发器的技能;掌握管理触发器的方法。技能目标使学生了解MySQL程序开发规范的重要性,培养学生的职业素质和道德规范;培养学生的规则意识,能够正确使用触发器为数据表建立规则。素质目标 任务8.1 创建触发器 任务8.1 创建触发器触发器与数据表的关系密切,主要用于保护表中的数据。只有使用INSERT、UPDATE或DELETE语句才能激活触发器,使用其他SQL语句不会激活触发器。语法格式如下所示。CREATE TRIGGER 触发器名称 触发时机 触发事件 ON 表名 FOR EACH ROW BEGIN 触发器主体代码END触发事件可用的关键字有INSERT、UPDATE、DELETE,关键字INSERT用于将一行新数据插入表中时激活触发器,关键字UPDATE用于更改表中某一行数据时激活触发器,关键字DELETE用于从表中删除某一行数据时激活触发器。触发时机可用的关键字有BEFORE、AFTER,表示触发器在激活它的语句之前或之后触发。若希望验证新数据是否满足条件,则使用关键字BEFORE;若希望在激活触发器的语句执行之后完成更多的操作,则通常使用关键字AFTER。 8.1.1 创建INSERT型触发器1.创建并调用无参的存储过程【实例8-1】在xsgl数据库中为kecheng表创建名为“t8_1”的INSERT型触发器,要求在kecheng表中插入一条记录后检查其学分设置是否合理(合理的学分应大于等于0且小于等于5),若不合理则设置其学分为2.5,SQL语句及其执行结果如下所示。mysqlDELIMITER $mysqlUSE xsgl$mysqlCREATE TRIGGER t8_1 BEFORE INSERT ON kecheng FOR EACH ROW BEGIN IF NEW.xf0 OR NEW.xf5 THEN SET NEW.xf=2.5; END IF; END$mysqlINSERT INTO kecheng(kcdm,kcmc,xf) values(C11,触发器,20)$mysqlSELECT * FROM kecheng WHERE kcdm=C11$ 8.1.1 创建INSERT型触发器【提示】以上SQL语句分为三大部分。第一部分使用CREATE TRIGGER语句为kecheng表创建名为“t8_1”的触发器,关键字INSERT指的是当对kecheng表进行INSERT操作时触发该触发器,关键字BEFORE指的是在操作发生之前触发该触发器。第二部分使用INSERT语句向kecheng表中插入一条学分不合理的记录,在INSERT语句执行之前会触发t8_1触发器,转而执行触发器主体代码,其中的关键字NEW代表待插入的记录,触发器主体代码中使用IF语句判断待插入的记录中的学分字段不合法后,将待插入的记录中的学分字段设置成2.5,再执行INSERT语句。第三部分使用SELECT语句查询出刚插入的记录。从执行结果可以看到,在kecheng表中插入一条学分不合理的记录时,成功通过触发器将其学分字段设置为了2.5。【注意】若创建触发器时使用关键字AFTER,则触发器主体代码中只能使用关键字NEW获取插入的这一行记录的每一个字段。 8.1.2 创建UPDATE型触发器【实例8-2】在xsgl数据库中为kecheng表创建名为“t8_2”的UPDATE型触发器,要求在kecheng表中更新记录前,只允许更新其课程名称,SQL语句及其执行结果如下所示。mysqlDELIMITER $mysqlUSE xsgl$mysqlCREATE TRIGGER t8_2 BEFORE UPDATE ON kecheng FOR EACH ROW BEGIN IF NEW.kcdm!=OLD.kcdm THEN SET NEW.kcdm=OLD.kcdm; END IF; IF NEW.xf!=OLD.xf THEN SET NEW.xf=OLD.xf; END IF; END$mysqlUPDATE kecheng SET kcdm=C12,kcmc=数据结构2022,xf=2.0 where kcdm=C02$mysqlSELECT * FROM kecheng WHERE kcmc=数据结构2

文档评论(0)

1亿VIP精品文档

相关文档