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/zh-tw/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

發表回復

登錄後才能評論