项目七总结:创建与使用触发器

数据表中为了保证数据的完整性或执行其它特殊规则,MySQL除了提供约束之外,还提供了另外一种机制:触发器(trigger)。

【任务7.1】    创建触发器

1.触发器概述
       触发器是特殊的存储过程,是一个被指定关联到数据表上的数据库对象,可以看作数据表定义的一部分,可用于实现数据库中数据的完整性。普通的存储过程通过 Call 命令调用,而触发器的调用不同,只能由数据库的特定事件来触发,且不能接收参数,它在插入、删除或修改指定数据表中数据时触发执行,从而实现数据的自动维护。
触发器有以下3个作用。
       (1)安全性。可以使用户具有操作数据库的特定权利。例如,在“销售表”中插入一条销售记录,可以通过触发器实现对“商品一览表”中库存的更新,而不用直接
将“商品一览表”展现在特定用户面前。
       (2)实现复杂的数据完整性。实现数据完整性约束或规则,触发器可实现比约束更复杂的限制。
       (3)实现复杂的非标准数据相关完整性。触发器可以对数据库中相关的表进行级联更新。例如,在“销售表”中插入一条销售记录,可以通过触发器实现对“商品一览表”中库存的级联更新。

2.创建触发器

创建触发器使用 CREATE TRIGGER 语句,其语法格式为:

CREATE TRIGGER 触发器名 触发时刻 触发事件 ON 表名

       FOR EACH ROW

      触发器动作;

说明:
        ①触发器名。触发器名在当前数据库中必须具有唯一性,如果是在某个特定数据库中创建,在触发器名前加上数据库的名称。
        ②触发时刻。触发时刻有两个选择:BEFORE或AFTER,以表示触发器在激活它的语句之前触发或之后触发
        ③触发事件。触发事件是指激活触发器执行的语句类型,可以是INSERT(插人记录时激活触发器)、DELETE(删除记录时激活触发器)、UPDATE(更新记录时激活触发器)。
        ④表名。与触发器相关的数据表名称,在该数据表上发生触发事件时激活触发器。

        ⑤ FOR EACH ROW。行级触发器,指受触发事件每影响一行都会执行一次触发程序。
        ⑥触发器动作。触发器激活时将要执行的语句,如果要执行多条语句可使用 BEGIN…END复合语句。
        触发器动作中可以使用NEW与OLD关键字:当插入记录时,在触发动作中可以使用NEW关键字表示新记录,当需要访问新记录的某个字段值时,可以使用“NEW.字段名”的方式访问;当删除记录时,在触发动作中可以使用OLD关键字表示旧记录,当需要访向旧记录的某个字段值时,可以使用“OLD.字段名”的方式访问;当更新某条记录时,在触发程序中可以使用OLD关键字表示更新前的旧记录,使用NEW关键字表示更新后的新记录。
        注意,在MySQL 触发器中不能直接在客户端界面返回结果,所以在触发器动作中不要使用SELECT语句,也不能在一个表上同时创建两个相同类型的触发器。因此,在一个表上最多创建6个触发器。 

【任务7.2】查看及删除触发器

1.查看触发器

查看触发器使用SHOW TRIGGERS 语句和 SELECT 语句。

(1)SHOW TRIGGERS 的语法格式为:

SHOW TRIGGERS  [FROM 数据库名];

(2)SELECT 的语法格式为:

SELECT * FROM Information_Schema.Triggers

WHERE Trigger_Name=<触发器名>; 

2.删除触发器

删除触发器使用 DROP TRIGGER 语句,其语法格式为:

DROP TRIGGER [IF EXISTS] [数据库名.]触发器名;

说明:“ IF EXISTS” 用于判断触发器如果存在,那么执行此删除语句。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实 验 报 告 课程名称: 数据库系统分析与设计 实验名称:建立物业管理系统PDM模型 院 (系): 专业班级: 姓 名: 学 号: 指导教师: 一、实验目的和要求 1、了解数据库物理数据模型(PDM)的基本概念(表、列、视图、主键、外键、存储过 程、触发器、索引、完整性约束等); 2、了解PDM逆向工程; 3、了解如何在需求分析基础上创建物理模型; 4、学会在PowerDesigner中建立PDM; 5、学会并理解如何将PDM生成物理数据库; 6、学会在PowerDesigner中如何通过逆向工程生成PDM。 二、实验软硬件环境 1、个人PC电脑一台; 2、Windows操作系统、PowerDesigner16.0及以上版本; 三、实验内容 1、对物业管理系统建立物理数据模型(PDM); 2、将PDM生成物理数据库(SQL); 3、验证并生成数据库测试数据; 4、物X描述见教材第14章(247页-260页)。 四、实验原理 根据对物业管理业务的分析,同时结合数据库物理数据模型(PDM)的基本概念,在 需求分析的基础上,在PowerDesigner设计环境中直接建立起物业管理的物理数据库模型 (PDM)。使用ODBC接口连接数据库,用"generate database"生成物理数据库,通过对数据库物理数据模型(PDM)的修改,使得修改后的 PDM能够与已生成的数据库SQL脚本文件保持同步。使用PowerDesigner生成能够为数据库 的表中添加记录的测试数据。 5. 实验步骤、结果及分析 1) 对物业管理系统建立物理数据模型(PDM) 1) 业务分析,得到实体及其属性如下: 1) 小区基本信息(小区编号,名称,小区通讯地址,概括,小区照片,小区备注) 2) 物业基本信息(物业编号,楼号,单元号,房号,户型,建筑面积,使用面积,物 业备注) 3) 物业图片(物业编号,物业图片编号,物业图片,物业备注) 4) 维修项目(维修项目编号,维修项目名称,单位,单价,维修项目备注) 5) 迁入迁出(迁入迁出编号,牵动类型,牵动日期,迁入迁出备注) 6) 住户基本信息(住户编号,住户名称,性别,住户通讯地址,住户邮编,出生日期 ,职业,住户电话,住户照片,住户备注) 7) 报修处理中心(报修处理中心,报修时间,报修情况说明,完工时间,修理状态, 保修备注) 8) 费用时段信息(费用时段编号,开始日期,结束日期,账目日期,最后缴费日期, 过账标志) 9) 费用处理中心(费用处理中心编号,应缴金额,实缴金额,期初结余,期末结余, 滞纳金,物业管理费,维修费,保洁费,保安费,费用制单人,费用核实人) 10) 费用定义(费用编号,费用名称,费用备注) 2) 找出实体与实体间的联系 1 n 1 n n 1 n 1 n 1 1 1 n n n 1 3) 按照数据库物理数据模型(PDM)在PowerDesigner中建模方法,建立PDM模型 1)选择"File New Model"命令,得到如下窗口: 2. 选择"Physical Data Model"得到新窗口,然后对创建表: 3)小区基本信息表: 3. 物业基本信息表: 4. 物业图片表: 5. 维修项目表: 6. 迁入迁出表: 7. 住户基本信息表: 8. 报修处理中心表: 9. 费用时段信息表: 10. 费用处理中心表: 11)费用定义表: 4) 得到物业管理的PDM模型: (五)将PDM生成物理数据库(SQL) 1.通过ODBC连接数据库 2.生成数据库(仅截取了一部分生成的SQL数据库代码) (六)验证并生成数据库测试数据 1) 为表中的每个指定数据库描述文件,选择Database Generate Test Data 命令打开Test Data Generate窗口。 2) 选择Number of rows选项卡,设置每张表记录的参数。 3) 选择Format选项卡,设置测试数据脚本的参数格式。 4) 选择Selection选项卡,选择PDM和要生成测试数据脚本的表。 5) 单击"确定",按照所设置的参数生成测试数据,测试结果如下: 六、实验总结 通过本实验,我理解了数据库物理数据模型(PDM)的基本概念,实践了在对业务进 行分析的基础之上建立数据库物理数据模型(PDM),成功的在 PowerDesigner中建立了物业管理系统的PDM,并最终学会、理解了如何将PDM生成物理数 据库和如何在PowerDesigner中生成数据库测试数据。虽然在这过程中遇到了很多的问题 ,但是通过自己不断总结错误,进行修改,终于还是克服了重重困难,顺利完成了作业 ,这为自己以后的学习增加了信心和动力。相信在之后的课程设计中我会做得更好。当 然,要感谢老师平时在课堂中对我们的耐心授教,不然我不会完成得这
《数据库原理及技术》课程设计 一、课程设计的目的和要求 (1)培养学生理解与《数据库原理》课程相关的理论知识,学会分析实际问题的能力。 (2)培养学生运用《数据库原理》相关知识设计系统应用的思想和方法。 (3)培养学生查阅技术文献、资料、手册以及编写技术文献的能力。 (4)掌握主流数据库开发及系统设计技术,具体要求如下: 关系数据库采用Oracle、 SqlServer、MySQL等; 开发语言采用JSP+Java或.Net等; 系统构架采用SSH、SSM等MV C多层结构; 运行模式为B/S模式,要求至少能在Google、360、QQ、ie等一种主流浏览 器中运行; 中间件采用Tomcat、IIS等; 一人一题,不得私自换题,否则按零分计。 二、课程设计报告提纲 (1) 课程设计的题目、系统的总体功能描述 (2) 需求分析(概括描述、DFD、DD) (3) 数据库概念结构设计(局部E-R图、基本E-R图) (4) 数据库逻辑结构设计(关系模式—列表形式、存储过程、触发器、视图、索引) (5) 应用系统功能结构图(模块结构图) (6) 各功能模块程序流程图及其说明 (7) 程序源代码及其说明 (8) 总结(课程设计中遇到的主要问题和解决方法;创新和得意之处;课程设计中存在的不足 ,需进一步改进的设想;课程设计的感想和心得体会。) (9) 参考文献 三、评分规则 1、按照要求完成全部功能设计50分; 2、文档撰写文档30分; 3、上机检查答辩20分。 4、总评成绩折算成优、良、中、及格、不及格 四、课程设计作业提交 每人将设计的全部文档整理到一个word文件中。文件命名方式为:学号+姓名。统一交给 班长或学习文员,然后打包发送给任课老师。 课程设计题目 (1)学校图书借阅管理系统 功能要求: 实现图书信息、类别、出版社等信息的管理; 实现读者信息、借阅证信息的管理; 实现图书的借阅、续借、归还管理; 实现超期罚款管理、收款管理; 创建触发器,分别实现借书和还书时自动更新图书信息的在册数量; 创建视图查询各种图书的书号、书名、总数和在册数; 创建存储过程查询指定读者借阅图书的情况; 建立数据库相关表之间的参照完整性约束。 (2)高校学籍管理系统 功能要求: 实现学生信息、班级、院系、专业等的管理; 实现课程、学生成绩信息管理; 实现学生的奖惩信息管理; 创建规则用于限制性别项只能输入"男"或"女"; 创建视图查询各个学生的学号、姓名、班级、专业、院系; 创建存储过程查询指定学生的成绩单; 创建触发器当增加、删除学生和修改学生班级信息时自动修改相应班级学生人数; 建立数据库相关表之间的参照完整性约束。 (3)学校人力资源管理系统 实现学校部门信息、职务、职称和教职工信息管理; 实现教师的学籍经历管理; 实现教师的家庭关系管理; 实现教师的奖惩信息管理; 创建存储过程查询学校各部门各种职称的教职工数量; 创建触发器当增加、删除教职工和修改教职工部门信息时自动修改相应部门的职工 人数; 创建规则用于保证教职工的E-Mail的输入格式正确; 建立数据库相关表之间的参照完整性约束。 (4)某书店图书进货、销售管理系统 实现图书类别、出版社、图书、仓库信息的管理; 实现进货、入库管理; 实现销售、出库管理; 创建存储过程查询某段时间内各种图书的进货和销售情况; 创建视图查询各类图书的库存总数; 创建触发器当图书入库时自动修改相应图书的总量和存放仓库中该图书的数量; 要求一单可以处理多种图书(比如销售设置销售单及其明细两个表); 建立数据库相关表之间的参照完整性约束。 (5)某医院信息管理系统(药品库存、收费、医生病人等) 实现药品类型及药品信息的管理; 实现药品的入库、出库管理; 实现科室、医生、病人的管理; 实现处方的登记管理; 实现收费管理; 创建触发器,当药品入库、出库时自动修改库存; 创建存储过程统计某段时间内,各科室的就诊人数和输入情况; 创建视图查询各种药品的库存总数; 建立数据库相关表之间的参照完整性约束。 (6)某期刊的在线投稿审稿管理系统 实现作者、审稿人的信息管理; 实现稿件类型、稿件信息的管理; 实现稿件的审阅过程管理; 实现稿费、审稿费和版面费的管理; 创建存储过程,统计指定作者的稿件信息; 创建触发器,当收到审稿费时自动修改审稿费收到标记为"是"; 创建规则,使得作者的E-Mail必须满足电子邮件的基本格式; 建立数据库相关表之间的参照完整性约束。 (7)学校的工资管理系统 实现部门、职务、职称等基本信息的管理; 实现教职工信息的管理; 实现工资项目的管理,工资项目设有启用标志和加扣标志; 实现教职工工资项目及其工资的管理; 创建触发器当往教职工工资项目表中插入记录或删除记录时,自动修改该职工的应 发工资数和实发工资

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值