相关推荐recommended
数据库系统原理及MySQL应用教程实验八触发器创建与管理
作者:mmseoamin日期:2023-12-13

实验8:触发器创建与管理

一、实验目的

1.理解触发器的概念与类型。

2.理解触发器的功能及工作原理。

3.掌握创建、更改、删除触发器的方法。

4.掌握利用触发器维护数据完整性的方法。

二、实验内容

1.验证性实验:某同学定义产品信息product表,并对其触发器创建与管理

2.设计性试验:某同学定义产品信息product表,并对其触发器创建与管理

三、实验步骤与实验结果

(一)验证性实验

某同学定义产品信息product表,主要信息有:产品编号、产品名称、主要功能、生产厂商、c厂商地址,生成product表的SQL代码如下:

CREATE  TABLE  product (
id  INT(10)  NOT NULL  UNIQUE  PRIMARY KEY  ,
name  VARCHAR(20)  NOT NULL ,
function  VARCHAR(50) ,
company  VARCHAR(20)  NOT NULL,
address  VARCHAR(50)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

数据库系统原理及MySQL应用教程实验八触发器创建与管理,第1张

在对product表进行数据操作时,需要对操作的内容和时间进行记录。于是定义了operate表,其表生成SQL语句为:

CREATE  TABLE  operate (
op_id  INT(10)  NOT NULL  UNIQUE  PRIMARY KEY  AUTO_INCREMENT ,
op_name  VARCHAR(20)  NOT NULL ,
op_tiem   TIME  NOT NULL
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

数据库系统原理及MySQL应用教程实验八触发器创建与管理,第2张

请完成如下任务:

1.在product表上分别创建BEFORE INSERT、AFTER UPDATE和AFTER DELETE3个触发器,触发器的名称分别为Tproduct_bf_insert、Tproduct_af_update和Tproduct_af_del。执行语句部分都是向operate表插入操作方法和操作时间。

(1)创建Tproduct_bf_insert触发器SQL代码如下:

CREATE  TRIGGER  Tproduct_bf_insert  BEFORE  INSERT
ON  product  FOR  EACH  ROW  
INSERT INTO  operate  VALUES(null, 'Insert product', now());

数据库系统原理及MySQL应用教程实验八触发器创建与管理,第3张

(2)创建Tproduct_af_update触发器的SQL代码如下:

CREATE  TRIGGER  Tproduct_af_update  AFTER  UPDATE
ON  product  FOR  EACH  ROW  
INSERT INTO  operate  VALUES(null, 'Update product', now());

数据库系统原理及MySQL应用教程实验八触发器创建与管理,第4张

(3)创建Tproduct_af_del触发器的SQL代码如下:

CREATE  TRIGGER  Tproduct_af_del  AFTER  DELETE
ON  product  FOR  EACH  ROW  
INSERT INTO  operate  VALUES(null, 'delete product', now());

数据库系统原理及MySQL应用教程实验八触发器创建与管理,第5张

2.对product表分别执行INSERT、UPDATE和DELETE操作,分别查看operate表。

(1)对product表中插入一条记录:1, 'abc','治疗感冒', '北京abc制药厂','北京市昌平区'

INSERT INTO product VALUES(1, 'abc','治疗感冒', '北京abc制药厂','北京市昌平区');

数据库系统原理及MySQL应用教程实验八触发器创建与管理,第6张

(2)更新记录,将产品编号为1的厂商住址:改为“北京市海淀区”。

UPDATE product SET address='北京市海淀区' WHERE id=1;

数据库系统原理及MySQL应用教程实验八触发器创建与管理,第7张

(3)删除产品编号为1的记录。

DELETE FROM product WHERE id=1;

数据库系统原理及MySQL应用教程实验八触发器创建与管理,第8张

3.删除Tproduct_bf_insert触发器

DROP TRIGGER Tproduct_bf_insert;

数据库系统原理及MySQL应用教程实验八触发器创建与管理,第9张

(二)设计性试验

1.在product表上分别创建AFTER INSERT、BEFORE UPDATE和BEFORE DELETE 3个触发器,  触发器的名称分别为product_af_insert、product_bf_update和Tproduct_bf_del。执行语句部分都是向operate表中插入操作方法和操作时间。

CREATE  TRIGGER  product_af_insert  AFTER  INSERT
ON  product  FOR  EACH  ROW  
INSERT INTO  operate  VALUES(null, 'Insert product', now());
CREATE  TRIGGER  product_bf_update  BEFORE  UPDATE
ON  product  FOR  EACH  ROW  
INSERT INTO  operate  VALUES(null, 'Update product', now());
CREATE  TRIGGER  Tproduct_bf_del  BEFORE  DELETE
ON  product  FOR  EACH  ROW  
INSERT INTO  operate  VALUES(null, 'delete product', now());

数据库系统原理及MySQL应用教程实验八触发器创建与管理,第10张

2.查看product_bf_del触发器的基本结构。

SELECT * FROM information_schema.TRIGGERS WHERE trigger_name='product_bf_del';

数据库系统原理及MySQL应用教程实验八触发器创建与管理,第11张

3.对product表分别执行如下INSERT、UPDATE和DELETE操作,分别查看operate表。

INSERT INTO product VALUES(2, '止血灵','止血', '北京止血灵制药厂','北京市昌平区');

数据库系统原理及MySQL应用教程实验八触发器创建与管理,第12张

UPDATE product SET address='天津市开发区' WHERE id=2;

数据库系统原理及MySQL应用教程实验八触发器创建与管理,第13张

 数据库系统原理及MySQL应用教程实验八触发器创建与管理,第14张

DELETE FROM product WHERE id=2; 

数据库系统原理及MySQL应用教程实验八触发器创建与管理,第15张

 数据库系统原理及MySQL应用教程实验八触发器创建与管理,第16张

4.删除product_bf_update触发器。

数据库系统原理及MySQL应用教程实验八触发器创建与管理,第17张

四、观察与思考

1.能否在当前数据库中为其他数据库创建触发器?

答:能。

2.触发器何时被激发?

答:触发器主要是通过事件(增、删、改)进行触发被自动调用执行的。

五、实验要求

按要求完成,详细记录操作步骤,书写实验报告。所有实验环节均由每位学 生独立完成,认真记录操作过程,严禁抄袭他人实验结果。

六、实验总结

通过本次实验了解了触发器的作用,学习了怎么使用触发器,关于表增加修改和删除的时候触发器的工作方式。触发器是一个功能强大的工具。可以使多个不同的用户能够在保持数据完整性和一致性的良好环境进行修改操作。