mysql触发器update实例(mysql触发器实现oracle物化视图示例代码)

2025-04-13 21:10:01 0

mysql触发器update实例(mysql触发器实现oracle物化视图示例代码)

本文目录

mysql触发器实现oracle物化视图示例代码

oracle数据库支持物化视图--不是基于基表的虚表,而是根据表实际存在的实表,即物化视图的数据存储在非易失的存储设备上。下面实验创建ONCOMMIT的FAST刷新模式,在mysql中用触发器实现insert,update,delete刷新操作1、基础表创建,Orders表为基表,Order_mv为物化视图表复制代码代码如下:mysql》createtableOrders(-》order_idintnotnullauto_increment,-》product_namevarchar(30)notnull,-》pricedecimal(10,0)notnull,-》amountsmallintnotnull,-》primarykey(order_id));QueryOK,0rowsaffectedmysql》createtableOrder_mv(-》product_namevarchar(30)notnull,-》price_sumdecimal(8.2)notnull,-》amount_sumintnotnull,-》price_avgfloatnotnull,-》order_cntintnotnull,-》uniqueindex(product_name));QueryOK,0rowsaffected2、insert触发器复制代码代码如下:delimiter$$createtriggertgr_Orders_insertafterinsertonOrdersforeachrowbeginset@old_price_sum=0;set@old_amount_sum=0;set@old_price_avg=0;set@old_orders_cnt=0;selectifnull(price_sum,0),ifnull(amount_sum,0),ifnull(price_avg,0),ifnull(order_cnt,0)fromOrder_mvwhereproduct_name=new.product_nameinto@old_price_sum,@old_amount_sum,@old_price_avg,@old_orders_cnt;set@new_price_sum=@old_price_sum+new.price;set@new_amount_sum=@old_amount_sum+new.amount;set@new_orders_cnt=@old_orders_cnt+1;set@new_price_avg=@new_price_sum/@new_orders_cnt;replaceintoOrder_mvvalues(new.product_name,@new_price_sum,@new_amount_sum,@new_price_avg,@new_orders_cnt);end;$$delimiter;3、update触发器复制代码代码如下:delimiter$$createtriggertgr_Orders_updatebeforeupdateonOrdersforeachrowbeginset@old_price_sum=0;set@old_amount_sum=0;set@old_price_avg=0;set@old_orders_cnt=0;set@cur_price=0;set@cur_amount=0;selectprice,amountfromOrderswhereorder_id=new.order_idinto@cur_price,@cur_amount;selectifnull(price_sum,0),ifnull(amount_sum,0),ifnull(price_avg,0),ifnull(order_cnt,0)fromOrder_mvwhereproduct_name=new.product_nameinto@old_price_sum,@old_amount_sum,@old_price_avg,@old_orders_cnt;set@new_price_sum=@old_price_sum-@cur_price+new.price;set@new_amount_sum=@old_amount_sum-@cur_amount+new.amount;set@new_orders_cnt=@old_orders_cnt;set@new_price_avg=@new_price_sum/@new_orders_cnt;replaceintoOrder_mvvalues(new.product_name,@new_price_sum,@new_amount_sum,@new_price_avg,@new_orders_cnt);end;$$delimiter;4、delete触发器复制代码代码如下:delimiter$$createtriggertgr_Orders_deleteafterdeleteonOrdersforeachrowbeginset@old_price_sum=0;set@old_amount_sum=0;set@old_price_avg=0;set@old_orders_cnt=0;set@cur_price=0;set@cur_amount=0;selectprice,amountfromOrderswhereorder_id=old.order_idinto@cur_price,@cur_amount;selectifnull(price_sum,0),ifnull(amount_sum,0),ifnull(price_avg,0),ifnull(order_cnt,0)fromOrder_mvwhereproduct_name=old.product_nameinto@old_price_sum,@old_amount_sum,@old_price_avg,@old_orders_cnt;set@new_price_sum=@old_price_sum-old.price;set@new_amount_sum=@old_amount_sum-old.amount;set@new_orders_cnt=@old_orders_cnt-1;if@new_orders_cnt》0thenset@new_price_avg=@new_price_sum/@new_orders_cnt;replaceintoOrder_mvvalues(old.product_name,@new_price_sum,@new_amount_sum,@new_price_avg,@new_orders_cnt);elsedeletefromOrder_mvwhereproduct_name=@old.name;endif;end;$$delimiter;5、这里delete触发器有一个bug,就是在一种产品的最后一个订单被删除的时候,Order_mv表的更新不能实现,不知道这算不算是mysql的一个bug。当然,如果这个也可以直接用sql语句生成数据,而导致的直接后果就是执行效率低。复制代码代码如下:-》insertintoOrder_mv-》selectproduct_name,sum(price),sum(amount),avg(price),count(*)fromOrders-》groupbyproduct_name;

mysql 触发器 update

有两种方法,一种方法使用mysql的check table和repair table 的sql语句,另一种方法是使用MySQL提供的多个myisamchk, isamchk数据检测恢复工具。前者使用起来比较简便。推荐使用。1. check table 和 repair table登陆mysql 终端:mysql -uxxxxx -p dbnamecheck table tabTest;如果出现的结果说Status是OK,则不用修复,如果有Error,可以用:repair table tabTest;进行修复,修复之后可以在用check table命令来进行检查。在新版本的phpMyAdmin里面也可以使用check/repair的功能。2. myisamchk, isamchk其中myisamchk适用于MYISAM类型的数据表,而isamchk适用于ISAM类型的数据表。这两条命令的主要参数相同,一般新的系统都使用MYISAM作为缺省的数据表类型,这里以myisamchk为例子进行说明。当发现某个数据表出现问题时可以使用:myisamchk tablename.MYI进行检测,如果需要修复的话,可以使用:myisamchk -of tablename.MYI关于myisamchk的详细参数说明,可以参见它的使用帮助。需要注意的时在进行修改时必须确保MySQL服务器没有访问这个数据表,保险的情况下是最好在进行检测时把MySQL服务器Shutdown掉。-----------------------------另外可以把下面的命令放在你的rc.local里面启动MySQL服务器前: && /pathtochk/myisamchk -of /DATA_DIR/*/*.MYI其中的/tmp/mysql.sock是MySQL监听的Sock文件位置,对于使用RPM安装的用户应该是/var/lib/mysql/mysql.sock,对于使用源码安装则是/tmp/mysql.sock可以根据自己的实际情况进行变更,而pathtochk则是myisamchk所在的位置,DATA_DIR是你的MySQL数据库存放的位置。需要注意的时,如果你打算把这条命令放在你的rc.local里面,必须确认在执行这条指令时MySQL服务器必须没有启动!检测修复所有数据库(表)

MySQL中建立一个update触发器,如果某字段变为0则删去该行

mysql》 CREATE TABLE t (id INT, count INT);Query OK, 0 rows affected (0.05 sec)mysql》 DELIMITER //mysql》 CREATE TRIGGER BeforeUpdateT -》 AFTER UPDATE ON t -》 FOR EACH ROW -》 BEGIN -》 IF new.count = 0 THEN -》 DELETE FROM t WHERE id = new.id; -》 END IF; -》 END; -》 //Query OK, 0 rows affected (0.06 sec)mysql》 INSERT INTO t VALUES(1, 100) //Query OK, 1 row affected (0.01 sec)mysql》 UPDATE t SET `count` = 0 //ERROR 1442 (HY000): Can’t update table ’t’ in stored function/trigger because it is already used by statement which invoked this stored function/trigger.建了一个,结果失败了。原因是 MySQL 触发器里面,不让你更新被触发的表。

mysql触发器update实例(mysql触发器实现oracle物化视图示例代码)

本文编辑:admin

更多文章:


loaders(android loaders 什么时候使用)

loaders(android loaders 什么时候使用)

本文目录android loaders 什么时候使用如何在Linux系统中安装IonCube Loaderswebpack rules与loaders有什么区别webpack loaders中的include/exclude有什么用andr

2025年3月12日 21:40

publicizing(publicity reaches a mass audience 怎么翻译)

publicizing(publicity reaches a mass audience 怎么翻译)

本文目录publicity reaches a mass audience 怎么翻译publicizing什么意思publicize是什么意思及反义词请问下面这个句子最后面publicizing为什么加Ingpublicity reache

2025年3月22日 23:10

lobsters(lobsters怎么读)

lobsters(lobsters怎么读)

本文目录lobsters怎么读lobster是什么意思lobsters怎么读lobster 英Lobster is cheap and plentiful just now.现在的季节龙虾既便宜又充足。lobster是什么意思lob

2025年4月12日 04:30

sql语句增删改查语法(SQLSERVER 增删改语句是如何写的常用的都有那些函数,具体用法简单描述下!)

sql语句增删改查语法(SQLSERVER 增删改语句是如何写的常用的都有那些函数,具体用法简单描述下!)

本文目录SQLSERVER 增删改语句是如何写的常用的都有那些函数,具体用法简单描述下!增删改查sql语句SQL 的 增删改查 语句sql增删改查语句SQL数据库 基本的操作语句(增、删、改、查)SQLSERVER 增删改语句是如何写的常用

2025年3月10日 13:00

client mac addr dhcp(HP服务器断电后重启老是出现client mac addr  guid  dhcp,怎么办啊之后就是无限循环)

client mac addr dhcp(HP服务器断电后重启老是出现client mac addr guid dhcp,怎么办啊之后就是无限循环)

本文目录HP服务器断电后重启老是出现client mac addr guid dhcp,怎么办啊之后就是无限循环我的电脑是lenovo 启天m7150,开机显示为:client mac addr:44 37 e6 19 79 d1,dh

2025年2月11日 18:40

beyond是什么意思(黄家驹乐队的英文全称是BEYOND,BEYONG,BEYANG的哪一个呢)

beyond是什么意思(黄家驹乐队的英文全称是BEYOND,BEYONG,BEYANG的哪一个呢)

本文目录黄家驹乐队的英文全称是BEYOND,BEYONG,BEYANG的哪一个呢是什么让你喜欢上Beyond、喜欢上了黄家驹你最喜欢哪首歌你们是从什么时候认识黄家驹BEYOND的黄家驹乐队的英文全称是BEYOND,BEYONG,BEYANG

2025年3月4日 05:30

handle(control和handle的区别)

handle(control和handle的区别)

本文目录control和handle的区别android中handler如何使用control和handle的区别一、词义不一样control英  1、n. 控制;管理;抑制;操纵装置2、v. 控制;管理;抑制handle英  n. 把手

2025年4月8日 11:30

grep 多个关键字(linux中grep和find的区别)

grep 多个关键字(linux中grep和find的区别)

本文目录linux中grep和find的区别linux中统计多个关键字在某个文本中出现的次数,并按次数排序怎么写怎么在linux中在一个文件中搜索多个关键词,并把相关信息输出呢很多个关键词在另一个文件中linux中grep和find的区别这

2025年2月9日 14:00

bootstraptable隐藏某一列(bootstrap-table批量隐藏行怎么做呢)

bootstraptable隐藏某一列(bootstrap-table批量隐藏行怎么做呢)

本文目录bootstrap-table批量隐藏行怎么做呢html中table如何隐藏一列用js语句显示table的某个隐藏列如何将table中的某一行th隐藏怎样隐藏DataTable中的某一列bootstrap table能不能隐藏某列用

2025年3月24日 13:20

自建外贸网站怎么建?自建网站需要备案吗

自建外贸网站怎么建?自建网站需要备案吗

本文目录自建外贸网站怎么建自建网站需要备案吗自建外贸网站怎么建建设网站已经比你想象中还容易。如果你和我一样,没有建站经验也没有代码基础,却想亲自尝试一下,这种想法能实现吗?小编明确的告诉你,可以!没错,从0开始的初学者也可以完成这一目标。究

2025年3月9日 23:20

jquery下拉菜单特效(用jquery怎样做一个有弹动效果的下拉菜单)

jquery下拉菜单特效(用jquery怎样做一个有弹动效果的下拉菜单)

本文目录用jquery怎样做一个有弹动效果的下拉菜单jquery实现html的控件select的缓慢下拉效果用jquery怎样做一个有弹动效果的下拉菜单/*样式*/*{margin:0;padding:0;}ul,li{list-style

2025年4月4日 13:50

十大搜索引擎入口(五大主要搜索引擎 是哪五个啊)

十大搜索引擎入口(五大主要搜索引擎 是哪五个啊)

本文目录五大主要搜索引擎 是哪五个啊各大搜索引擎的网址请列出国内外十大搜索引擎,并说明它们的优缺点!各大搜索引擎提交入口是什么五大主要搜索引擎 是哪五个啊1.百度百度国内老牌搜索引擎,是国内搜索市场的龙头老大。百度凭借其深厚的搜索技术和PC

2025年4月2日 16:20

人类不宜飞行(人类为什么不 能飞)

人类不宜飞行(人类为什么不 能飞)

本文目录人类为什么不 能飞为什么人类不能飞为什么人不能飞人为什么不可以飞人为什么不能飞从物理学上解释,人为什么不能飞为什么人不可以飞人类为什么不 能飞因为鸟的骨头是空心的,而人类的骨头是实心的,而且鸟的骨头和我们人类的骨头不同,而鸟类的体内

2025年3月29日 22:50

spoil me(donotspoilme是什么意思)

spoil me(donotspoilme是什么意思)

本文目录donotspoilme是什么意思spoi me是什么意思donotspoilme是什么意思【Do not spoil me.】【别宠坏了我】===========================================柳浪

2025年3月13日 22:40

携程酒店加盟官网(如何入驻携程网)

携程酒店加盟官网(如何入驻携程网)

本文目录如何入驻携程网我开了一家酒店如何加入到携程网呢酒店如何加入到携程网呢携程酒店加盟官网你好!我是酒店的,请问怎么加入携程网费用佣金我想入驻携程网,需要怎么做呢如何入驻携程网商家入驻携程网流程如下。一、入驻流程1、申请入驻:(1)核对资

2025年3月6日 00:30

priorityqueue(二叉排序树的插入算法)

priorityqueue(二叉排序树的插入算法)

本文目录二叉排序树的插入算法java的 的priorityqueue 默认是最小堆吗二叉排序树的插入算法首先执行查找算法,找出被插结点的父亲结点。判断被插结点是其父亲结点的左、右儿子。将被插结点作为叶子结点插入。若二叉树为空。则首先单独生成

2025年2月25日 14:40

滚动条事件是什么(如何获取网页滚动条滚动事件)

滚动条事件是什么(如何获取网页滚动条滚动事件)

本文目录如何获取网页滚动条滚动事件如何判断滚动条滚到页面底部并执行事件wpf GridControl 垂直滚动条下拉 加载数据 的事件是哪个VB滚动条 和进度条问题14, 在程序运行时,若单击滚动条两端的箭头,会触发的滚动条事件在vb中,滚

2025年2月20日 05:10

c语言的移位运算符(C语言问题,在位运算中,操作数每右移一位,其结果相当于什么若左移1位,其结果相当于什么)

c语言的移位运算符(C语言问题,在位运算中,操作数每右移一位,其结果相当于什么若左移1位,其结果相当于什么)

本文目录C语言问题,在位运算中,操作数每右移一位,其结果相当于什么若左移1位,其结果相当于什么C语言左位移运算符和右位移运算符是什么意思,怎么运算,举个例子..在C语言中“->”怎么用C语言移位运算符怎么用c语言,移位运算符>>C语言问题,

2025年3月23日 18:10

tired out(我真的累了 用英语怎么说)

tired out(我真的累了 用英语怎么说)

本文目录我真的累了 用英语怎么说tired out什么意思是tire sb out还是tired sb outtired out与什么可以替换tired out和worn out的区别我真的累了 用英语怎么说我真的累了的英文:I’m rea

2025年2月16日 17:30

ultimately和finally的区别(英语单词eventually和finally有什么区别)

ultimately和finally的区别(英语单词eventually和finally有什么区别)

本文目录英语单词eventually和finally有什么区别Finally和哪个由两个单词组成的短语意思一样lastly和finally有什么区别eventually与finally的区别都有最终的意思,有什么区别eventually、u

2025年3月6日 09:00

近期文章

outputstream(java OutputStream使用方法)
2025-04-15 11:30:04
本站热文

harbor,port,pier的区别?谁能解释“harbour“(港口)与“pier“(码头)的区别
2025-02-22 17:40:03 浏览:20
ibatis foreach(ibatis 批量update操作)
2025-02-10 23:40:06 浏览:7
endless rain(endless rain表达什么情感)
2025-02-14 06:00:02 浏览:7
标签列表

热门搜索