当前位置: 首页 > news >正文

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 ;        //将结束字符给回“;”

http://www.xdnf.cn/news/1150345.html

相关文章:

  • 【橘子分布式】gRPC(编程篇-中)
  • 《Origin画百图》之多分类矩阵散点图
  • 从零开始学Tailwind CSS : 颜色配置原理与实践
  • (后者可以节约内存/GPU显存)Pytorch中求逆torch.inverse和解线性方程组torch.linalg.solve有什么关系
  • 93.数字信号处理相关的一些问题
  • 发明专利怎么写,与学术文章异同点与注意事项
  • 月舟科技近调记录
  • Python+ArcGIS+AI蒸散发与GPP估算|Penman-Monteith模型|FLUXNET数据处理|多源产品融合|专业科研绘图与可视化等
  • 实验-华为综合
  • Visual Studio Code(VSCode)中设置中文界面
  • 【Python库包】Gurobi-Optimize (求解 MIP) 安装
  • GATE:基于移动嵌入式设备的实时边缘构建图注意力神经网络用于鲁棒室内定位
  • ElasticSearch:商品SKU+SPU实现join查询,设计及优化
  • 【数据结构】二叉树初阶详解(一):树与二叉树基础 + 堆结构全解析
  • 计算机网络:(十)虚拟专用网 VPN 和网络地址转换 NAT
  • 智能体之变:深度解析OpenAI ChatGPT Agent如何重塑人机协作的未来
  • 【Linux】基本指令
  • c++——友元函数
  • Java大视界:Java大数据在智能医疗电子健康档案数据挖掘与健康服务创新>
  • Android无需授权直接访问Android/data目录漏洞
  • K8s与Helm实战:从入门到精通
  • MySQL数据丢失救援办法
  • 物联网iot、mqtt协议与华为云平台的综合实践(万字0基础保姆级教程)
  • 抖音回应:没有自建外卖,就是在团购的基础上增加的配送功能
  • 游戏开发日志
  • Android回调机制入门
  • Ambiguity-Resolved Waveform Design for Cell-free OFDM-Based ISAC Systems
  • QuecPython-正则表达式
  • 研华PCI-1285/1285E 系列------(一概述)
  • LVS(Linux virtual server)-实现四层负载均衡