MySQL练习3

创建mydb16_trigger数据库,建立product表,操作方式operate表

(1)创建mydb16_trigger数据库

create database mydb16_trigger;        //创建数据库

use mydb16_trigger;        //进入数据库

(2)创建product表

product表
字段名字段描述数据类型主键外键非空唯一自增
id产品编号Int(10)
name产品功能Varchar(20)
func主要功能Varchar(20)
com生产厂家Varchar(20)
address家庭住址Varchar(20)

create table product(id int(10) primary key comment '产品编号',name varchar(20) not null comment '产品功能',func varchar(20) comment '主要功能',com varchar(20) not null comment '生产厂家',address varchar(20) comment '家庭住址');       

//创建product表

desc product;        //查看product表属性

(3)创建operate表

operate表
字段名字段描述数据类型主键外键非空唯一自增
op_id编号Int(10)
op_type操作方式Varchar(20)
op_time操作时间Varchar(20)

create table operate(op_id int(10) primary key auto_increment comment '编号',op_type varchar(20) not null comment '操作方式',op_time varchar(20) not null comment '操作时间');

//创建operate表

desc operate;        //查看operate表属性

(4)插入product数据

insert into product(id,name,func,com,address) values
(1,'智能手机','通讯','华为','广东省深圳市'),
(2,'笔记本电脑','办公','联想',''),
(3,'智能手表','健康监测','小米','北京市昌平区');

select * from product;        //查看product表数据

 

- 创建触发器,每次激活触发器后,都会更新operate表
  - 创建product_after_insert_trigger 
  - 创建product_after_update_trigger
  - 创建product_after_delete_trigger
  - 执行语句向operate表插入操作方法

  1.定义触发器实现在产品表(product)中每多一个产品,就在操作表(operate)中记录操作方式和时间以及编号记录。

delimiter $$        //将结束字符改为“$$”

create trigger product_after_insert_trigger after insert
on product for each row
begin
 insert into operate(op_type,op_time)
 values(concat('新增产品',new.id),now());
end$$

//create trigger--创建触发器,product_after_insert_trigger--“插入”触发器名,after insert on product--在product表每次插入数据后触发,for each row--每行数据执行一次,begin--需执行的代码开始,values--返回插入值,concat--拼接操作类型和产品ID,insert用new.id,now()--插入时时间,end--需执行的代码结束

select * from information_schema.triggers
where trigger_name='product_after_insert_trigger'\G

//查看触发器属性,information_schema--元数据,triggers--存储触发器的系统视图,\G--结束符(多行显示数据)

insert into product(id,name,func,com,address) values
(4,'无线耳机','','索尼','')$$

//执行insert,新插入product数据

select * from product$$        //查看product表数据

select * from operate$$        //查看operate表数据

注:如果需要删除触发器

drop trigger product_after_insert_trigger$$

  2.定义触发器实现在产品表(product)中每更新一个产品,就在操作表(operate)中记录操作方式和时间以及编号记录。

create trigger product_after_update_trigger after update
on product for each row
begin
 insert into operate(op_type,op_time)
 values(concat('更新产品',old.id),now());
end$$

//create trigger--创建触发器,product_after_update_trigger--“更新”触发器名,after update on product--在product表每次更新数据后触发,for each row--每行数据执行一次,begin--需执行的代码开始,values--返回插入值,concat--拼接操作类型和产品ID,update可以用new.id和old.id,now()--插入时时间,end--需执行的代码结束

select * from information_schema.triggers
where trigger_name='product_after_update_trigger'\G

update product set address='北京市海淀区' where id=2$$

//执行update,更新product数据

select * from product$$

select * from operate$$

  3.定义触发器实现在产品表(product)中每删除一个产品,就在操作表(operate)中记录操作方式和时间以及编号记录。

create trigger product_after_delete_trigger after delete
on product for each row
begin
 insert into operate(op_type,op_time)
 values(concat('删除产品',old.id),now());
end$$

//create trigger--创建触发器,product_after_delete_trigger--“删除”触发器名,after delete on product--在product表每次删除数据后触发,for each row--每行数据执行一次,begin--需执行的代码开始,values--返回插入值,concat--拼接操作类型和产品ID,delete用old.id,now()--删除时时间,end--需执行的代码结束

select * from information_schema.triggers
where trigger_name='product_after_delete_trigger'\G

delete from product where id=3$$

//执行delete,删除product表数据

select * from product$$

select * from operate$$

delimiter ;        //将结束字符给回“;”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值