触发器的创建与管理实验

一、验证性实验
某同学定义产品信息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)
);
在这里插入图片描述
在对product表进行数据操作时,需要对操作的内容和时间进行记录。于是定义了operate表,其表生成SQL语句为:
CREATE TABLE operate (
op_id INT(10) NOT NULL UNIQUE PRIMARY KEY AUTO_INCREMENT ,
op_name VARCHAR(20) NOT NULL ,
op_time TIME NOT NULL
);
在这里插入图片描述
请完成如下任务:
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());
在这里插入图片描述
(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());
在这里插入图片描述
(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());
在这里插入图片描述
2.对product表分别执行INSERT、UPDATE和DELETE操作,分别查看operate表。
(1)对product表中插入一条记录:1, ‘abc’,‘治疗感冒’, ‘北京abc制药厂’,‘北京市昌平区’
SQL代码:INSERT INTO product VALUES(1, ‘abc’,‘治疗感冒’, ‘北京abc制药厂’,‘北京市昌平区’);
在这里插入图片描述
(2)更新记录,将产品编号为1的厂商住址:改为“北京市海淀区”。
SQL代码:UPDATE product SET address=‘北京市海淀区’ WHERE id=1;
在这里插入图片描述
(3)删除产品编号为1的记录。
SQL代码:DELETE FROM product WHERE id=1;
在这里插入图片描述
3.删除Tproduct_bf_update触发器
DROP TRIGGER Tproduct_bf_insert;
在这里插入图片描述
二、设计性实验
1.在product表上分别创建AFTER INSERT、BEFORE UPDATE和BEFORE DELETE 3个触发器, 触发器的名称分别为product_af_insert、product_af_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_af_update before insert
on product for each row
insert into operate values(null,‘update product’,now());
在这里插入图片描述
create trigger product_bf_del before insert
on product for each row
insert into operate values(null,‘delete product’,now());
在这里插入图片描述
2.查看product_bf_del触发器的基本结构。
show triggers;
在这里插入图片描述
3.对product表分别执行如下INSERT、UPDATE和DELETE操作,分别查看operate表。
INSERT INTO product VALUES(2, ‘止血灵’,‘止血’, ‘北京止血灵制药厂’,‘北京市昌平区’);
在这里插入图片描述
UPDATE product SET address=‘天津市开发区’ WHERE id=2;
在这里插入图片描述
DELETE FROM product WHERE id=2;
在这里插入图片描述
在这里插入图片描述
4.删除product_bf_update触发器。
drop trigger product_bf_update;
在这里插入图片描述

  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值