欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL觸發(fā)器之判斷更新操作前后數(shù)據(jù)是否改變

 更新時(shí)間:2023年08月30日 09:53:11   作者:夢想路上的小菜鳥  
這篇文章主要介紹了MySQL觸發(fā)器之判斷更新操作前后數(shù)據(jù)是否改變方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

MySQL觸發(fā)器判斷更新操作前后數(shù)據(jù)是否改變

改動(dòng)表為user , 改動(dòng)后將部分信息寫入cfq_tab表

1. 新增觸發(fā)器

create TRIGGER cfq_on_user_add
after insert on user
for each ROW
BEGIN
?insert into cfq_tab(id,type_id,type,status) values (null,new.UID,1,0);
end;

2. 修改觸發(fā)器

判斷修改前后數(shù)據(jù)是否變動(dòng)

//DROP TRIGGER IF EXISTS cfq_on_user_edit
create TRIGGER cfq_on_user_edit
after update on user
for each ROW
BEGIN
if new.USER_NAME <>old.USER_NAME or new.DEPT_ID <> old.DEPT_ID then
?insert into cfq_tab(id,type_id,type,status) values (null,new.UID,2,0);
end if;
end;

MySQL觸發(fā)器(同步表數(shù)據(jù)增刪改)

起因

開發(fā)過程中偶爾會出現(xiàn)一種場景,兩個(gè)不同服務(wù)間的數(shù)據(jù)庫表格內(nèi)容需要保持一致。

由于要保持服務(wù)本身的獨(dú)立性,不太適合使用同一個(gè)數(shù)據(jù)庫。

這個(gè)時(shí)候可以考慮同步數(shù)據(jù)庫內(nèi)容。

觸發(fā)器恰好可以起到這樣的作用,只要寫增、刪、改三個(gè)觸發(fā)器便可。

觸發(fā)器只需寫在源表內(nèi),可將更新同步至目標(biāo)表。

語法

DELIMITER $
create trigger <觸發(fā)器名> after <操作名(insert、delete、update)> on <源表名> for each row
begin
<sql語句>
END $;
DELIMITER ;

增加(insert)

在觸發(fā)器里面有兩個(gè)關(guān)鍵字 old和new,在insert操作的時(shí)候我們使用的是new

DELIMITER $
create trigger user_insert after insert on upms_user for each row
begin
INSERT INTO `storage`.upms_user(id,username,create_time,creator,update_time,updater) 
VALUES(new.id,new.username,new.create_time,new.creator,new.update_time,new.updater);
END $;
DELIMITER ;

刪除(delete)

在where條件語句中我們需要使用的是關(guān)鍵字old

DELIMITER $
CREATE TRIGGER user_delete AFTER DELETE ON upms_user FOR EACH ROW
BEGIN
DELETE FROM `storage`.upms_user WHERE id=old.id;
END $;
DELIMITER ;

更新(update)

此處要注意的是,我們在字段賦值時(shí)使用的時(shí)new,在where條件中使用的old。

DELIMITER $
CREATE TRIGGER user_update AFTER UPDATE ON upms_user FOR EACH ROW
BEGIN
UPDATE `storage`.upms_user SET username=new.username,create_time=new.create_time,creator=new.creator,
update_time=new.update_time,updater=new.updater where id=old.id;
END $;
DELIMITER ;

navicat創(chuàng)建觸發(fā)器示例

右擊需要數(shù)據(jù)源表格,選擇設(shè)計(jì)表->觸發(fā)器,輸入觸發(fā)器名稱,觸發(fā)方式(After、Before),觸發(fā)操作(insert、delete、update),然后在下方定義處寫對應(yīng)的操作即可

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 前端傳參數(shù)進(jìn)行Mybatis調(diào)用mysql存儲過程執(zhí)行返回值詳解

    前端傳參數(shù)進(jìn)行Mybatis調(diào)用mysql存儲過程執(zhí)行返回值詳解

    這篇文章主要介紹了前端傳參數(shù)進(jìn)行Mybatis調(diào)用mysql存儲過程執(zhí)行返回值詳解,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • mysql刪除無用用戶的方法實(shí)現(xiàn)

    mysql刪除無用用戶的方法實(shí)現(xiàn)

    本文主要介紹了mysql刪除無用用戶的方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-03-03
  • MySQL如何查看元數(shù)據(jù)鎖阻塞在哪里

    MySQL如何查看元數(shù)據(jù)鎖阻塞在哪里

    這篇文章主要介紹了MySQL如何查看元數(shù)據(jù)鎖阻塞在什么地方的相關(guān)資料,希望通過本文能幫助到大家,讓大家實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下
    2017-10-10
  • MySQL 數(shù)據(jù)庫如何解決高并發(fā)問題

    MySQL 數(shù)據(jù)庫如何解決高并發(fā)問題

    這篇文章主要介紹了MySQL 如何處理高并發(fā),幫助大家更好的優(yōu)化MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下
    2020-09-09
  • 最新評論