mysql触发器更新语句实例,mysql触发器更新数据

本文目录一览:

mysql 5.1 一个触发器 更新多个表

楼主写的触发器明显错了吗,既然你是想通过更新mst_officecurrency表来达到更mst_office表的目的,那么首先下面语句是多余的,它应该是等你建好了触发器之后再在SQL窗口中写的:

update `mst_generalsetup` set `CurrencyName`=NEW.OfficeCurrencyName where `CurrencyName`=OLD.OfficeCurrencyName;

而且如果是在SQL窗口中那这样写就错了,你应该写成例如:

update mst_generalsetup set OfficeCurrencyName=新值 where OfficeCurrencyName=原来的值;

你得提供一个新值和旧值啊,不然你写了那么多new,old值,人家电脑知道你new值为多少,old值又为多少啊,所以正确的触发器是下面的写法:

create trigger t_AfterUpdate_on_mst_officecurrency

after update on mst_officecurrency

for each row

begin

update mst_office set Currency=:new.OfficeCurrencyName where Currency=:old.OfficeCurrencyName;

end;

/

创建完触发器之后再写SQL语句对mst_generalsetup表进行更新:

SQLupdate mst_generalsetup set OfficeCurrencyName=新值 where OfficeCurrencyName=原来的值;

总体上就是这样,还有就是创建触发器的时候你在表名和列名前面不要加单引号,会报错的,如果还有什么问题再追问我就好了。

求助mysql的触发器更新..

delimiter |

create trigger trg_table1_name after update on table1 for each row

begin 

 

 update table2 set name=NEW.name where table1_id=NEW.id;

end; 

|

delimiter ;

mysql 触发器 update

有两种方法,一种方法使用mysql的check table和repair table 的sql语句,另一种方法是使用MySQL提供的多个myisamchk, isamchk数据检测恢复工具。前者使用起来比较简便。推荐使用。

1. check table 和 repair table

登陆mysql 终端:

mysql -uxxxxx -p dbname

check 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服务器前:

[ -x /tmp/mysql.sock ] /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 触发器 if 语句 update

@sqlz =’select asd from flkg’;

EXECUTE(@sqlz);

———-

首先,mysql下动态语句不是这样写的,另外,触发器里不能允许返回结果集的.

这里我是希望他能中断更新!

———————

你的意思是不是要中断后面的

SET amount =@amountmm

WHERE CODE=new.code AND whcode = new.whcode ;

这部分?

如果是的话,那这样改下:

DELIMITER $$

USE `eerp`$$

DROP TRIGGER /*!50032 IF EXISTS */ `material_update`$$

CREATE TRIGGER `material_update` AFTER UPDATE ON `sf_material`

FOR EACH ROW BEGIN

IF new.auditing = ‘Y’ THEN

SET @amountmm = (SELECT amount-new.amount FROM warehouse WHERE CODE=new.code AND whcode = new.whcode);

IF @amountmm =0 THEN

UPDATE warehouse

SET amount =@amountmm

WHERE CODE=new.code AND whcode = new.whcode ;

END IF ;

END IF;

END;

$$

DELIMITER ;

“我是要中断更新。。不是后面。。。严格说就是这个表sf_material更新和后面的那个表warehouse更新也一起中断!”

—————————————————————

因为mysql下触发器内不支持rollback,所以,变换一个方式来处理,如下:

那触发器部分这么写(注意:一定要使表TB_error_rollback在你的库中不允许存在):

CREATE TRIGGER `material_update`

BEFORE UPDATE

ON `sf_material`

FOR EACH ROW

BEGIN

IF new.auditing = ‘Y’ THEN

SET @amountmm = (SELECT amount- new.amount FROM warehouse WHERE CODE=new.code AND whcode = new.whcode);

IF @amountmm 0 THEN

update TB_error_rollback set name=1;

END IF;

UPDATE warehouse

SET amount =@amountmm

WHERE CODE=new.code AND whcode = new.whcode;

END IF;

END;

mysql 实现每月更新一次的触发器问题

1、触发器是update后激发的,我想你需要的是mysql计划任务。

2、计划任务状态

show variables like ‘%event%’;

3、使用下列的任意一句开启计划任务:

SET GLOBAL event_scheduler = ON;

SET @@global.event_scheduler = ON;

SET GLOBAL event_scheduler = 1; — 0代表关闭

SET @@global.event_scheduler = 1;

4、创建event语法

help create event

5、实例

实例0:

每5分钟删除sms表上面ybmid为空白且createdate距现时间超过5分钟的数据。

USE test;

CREATE EVENT event_delnull

ON SCHEDULE

EVERY 5 MINUTE STARTS ‘2012-01-01 00:00:00’ ENDS ‘2012-12-31 00:00:00’

DO

DELETE FROM sms WHERE ybmid=” AND TIMEDIFF(SYSDATE(),createdate)’00:05:00′;

实例1:

每天调用存储过程一次:

mysql delimiter //

mysql create event updatePTOonSunday

– on schedule every 1 day

– do

– call updatePTO();

– //

Query OK, 0 rows affected (0.02 sec)

这里updatePTO()是数据库里自定义的存储过程

6、查看任务计划:

SELECT * FROM mysql.event\G

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/303131.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-31 11:49
下一篇 2024-12-31 11:49

相关推荐

  • Python读取CSV数据画散点图

    本文将从以下方面详细阐述Python读取CSV文件并画出散点图的方法: 一、CSV文件介绍 CSV(Comma-Separated Values)即逗号分隔值,是一种存储表格数据的…

    编程 2025-04-29
  • Python3支持多行语句

    Python3是一种高级编程语言,开发人员可以轻松地使用该语言编写简单到复杂的代码。其中Python3支持多行语句,方便开发人员编写复杂的代码,提高代码的可读性和可维护性。 一、使…

    编程 2025-04-29
  • Python中读入csv文件数据的方法用法介绍

    csv是一种常见的数据格式,通常用于存储小型数据集。Python作为一种广泛流行的编程语言,内置了许多操作csv文件的库。本文将从多个方面详细介绍Python读入csv文件的方法。…

    编程 2025-04-29
  • Python生成随机数的应用和实例

    本文将向您介绍如何使用Python生成50个60到100之间的随机数,并将列举使用随机数的几个实际应用场景。 一、生成随机数的代码示例 import random # 生成50个6…

    编程 2025-04-29
  • 如何用Python统计列表中各数据的方差和标准差

    本文将从多个方面阐述如何使用Python统计列表中各数据的方差和标准差, 并给出详细的代码示例。 一、什么是方差和标准差 方差是衡量数据变异程度的统计指标,它是每个数据值和该数据值…

    编程 2025-04-29
  • Python多线程读取数据

    本文将详细介绍多线程读取数据在Python中的实现方法以及相关知识点。 一、线程和多线程 线程是操作系统调度的最小单位。单线程程序只有一个线程,按照程序从上到下的顺序逐行执行。而多…

    编程 2025-04-29
  • Python for循环语句打印九九乘法表

    本篇文章将详细介绍如何使用Python的for循环语句打印九九乘法表。打印九九乘法表是我们初学Python时经常练习的一项基础操作,也是编写Python程序的基本能力之一。 1、基…

    编程 2025-04-29
  • Python两张表数据匹配

    本篇文章将详细阐述如何使用Python将两张表格中的数据匹配。以下是具体的解决方法。 一、数据匹配的概念 在生活和工作中,我们常常需要对多组数据进行比对和匹配。在数据量较小的情况下…

    编程 2025-04-29
  • Python爬取公交数据

    本文将从以下几个方面详细阐述python爬取公交数据的方法: 一、准备工作 1、安装相关库 import requests from bs4 import BeautifulSou…

    编程 2025-04-29
  • Python数据标准差标准化

    本文将为大家详细讲述Python中的数据标准差标准化,以及涉及到的相关知识。 一、什么是数据标准差标准化 数据标准差标准化是数据处理中的一种方法,通过对数据进行标准差标准化可以将不…

    编程 2025-04-29

发表回复

登录后才能评论