<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
觸發器,就是一種特殊的儲存過程。觸發器和儲存過程一樣是一個能夠完成特定功能、儲存在資料庫伺服器上的SQL片段,但是觸發器無需呼叫,當對資料庫表中的資料執行DML操作時自動觸發這個SQL片段的執行,無需手動條用。
在MySQL中,只有執行insert,delete,update操作時才能觸發觸發器的執行
觸發器的這種特性可以協助應用在資料庫端確保資料的完整性 , 紀錄檔記錄 , 資料校驗等操作 。
使用別名 OLD 和 NEW 來參照觸發器中發生變化的記錄內容,這與其他的資料庫是相似的。現在觸發器還只支援行級觸發,不支援語句級觸發。
1、建立只有一個執行語句的觸發器
create trigger 觸發器名 before|after 觸發事件 on 表名 for each row 執行語句;
2、建立有多個執行語句的觸發器
create trigger 觸發器名 before|after 觸發事件 on 表名 for each row begin 執行語句列表 end;
-- 資料準備 create database if not exists db_trigger; use mydb10_trigger; -- 使用者表 create table user( uid int primary key , username varchar(50) not null, password varchar(50) not null ); -- 使用者資訊操作紀錄檔表 create table user_logs( id int primary key auto_increment, time timestamp, log_text varchar(255) );
-- 如果觸發器存在,則先刪除 drop trigger if exists trigger_test1; -- 建立觸發器trigger_test1 create trigger trigger_test1 after insert on user -- 觸發時機:當新增user表資料時觸發 for each row insert into user_logs values(NULL,now(), '有新使用者註冊'); -- 新增資料,觸發器自動執行並新增紀錄檔程式碼 insert into user values(1,'張三','123456');
從上面的語法我們可以知道,觸發器的基本的結構是怎樣的
create trigger 觸發器名稱 after(before)insert(update,delete)on 表名(監控表) for each row 執行語句
-- 如果觸發器trigger_test2存在,則先刪除 drop trigger if exists trigger_test2; -- 建立觸發器trigger_test2 delimiter $$ create trigger trigger_test2 after update on user -- 觸發時機:當修改user表資料時觸發 for each row -- 每一行 begin insert into user_logs values(NULL,now(), '使用者修改發生了修改'); end $$ delimiter ; -- 新增資料,觸發器自動執行並新增紀錄檔程式碼 update user set password = '888888' where uid = 1;
這裡,採用了標準的格式進行觸發器的語法格式,可以定義多個執行語句,將所有的執行語句寫在begin end $$裡面,也就是需要採用這樣的方式包裹住。
delimiter $$ create trigger 觸發器名稱 after(before)insert(update,delete)on 表名 for each row begin 執行語句 end $$ delimiter;
也就是說我們將出發語句,放在了begin 和 end $$ 中間
MySQL 中定義了 NEW 和 OLD,用來表示觸發器的所在表中,觸發了觸發器的那一行資料,來參照觸發器中發生變化的記錄內容,具體地:
觸發器型別
|
觸發器型別NEW 和 OLD的使用
|
INSERT 型觸發器
|
NEW 表示將要或者已經新增的資料
|
UPDATE 型觸發器
|
OLD 表示修改之前的資料 , NEW 表示將要或已經修改後的資料
|
DELETE 型觸發器
|
OLD 表示將要或者已經刪除的資料
|
使用方法:
NEW.columnName (columnName為相應資料表某一列名)
create trigger trigger_test3 after insert on user for each row insert into user_logs values(NULL,now(),concat('有新使用者新增,資訊為:',NEW.uid,NEW.username,NEW.password)); -- 測試 insert into user values(4,'趙六','123456');
show triggers;
-- drop trigger [if exists] trigger_name drop trigger if exists trigger_test1;
既然,在MySQL內部建立觸發器,會使得表的執行效率大大降低,我們又如何去監控我們的表運算元據呢?答案是,我們可以使用後臺程式碼,比如python、java,通過連線資料庫,實現對資料的行為進行監控,達到我們紀錄檔的監控(表的操作)。
舉一個簡單的例子,目前某學校使用的教務管理系統是採用傳統的資料庫——mysql,現在老師將學生的成績統一上傳到了後臺,但是發現有一位同學的成績出現了錯誤,於是它就修改了該同學的資料,這個時候專門的記錄操作的表就會記錄下該老師的操作行為。
到此這篇關於MySQL觸發器自動智慧化的資料維護的文章就介紹到這了,更多相關MySQL觸發器 內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45