<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
格式
1.建立只有一個執行語句的觸發器
2.建立有多個執行語句的觸發器
操作
演示
create database if not exists test_trigger; use test_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) ); -- 需求1:當user表新增一行資料,則會自動在user_log新增紀錄檔記錄 -- 定義觸發器:trigger_test1 create trigger trigger_test1 after insert on user for each row insert into user_logs values(null,now(),'有新使用者新增'); -- 在user表新增資料,讓觸發器自動執行 insert into `user` values(1,'張三','123456');
結果展示
create database if not exists test_trigger; use test_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) ); -- 需求1:當user表新增一行資料,則會自動在user_log新增紀錄檔記錄 -- 定義觸發器:trigger_test1 create trigger trigger_test1 after insert on user for each row insert into user_logs values(null,now(),'有新使用者新增'); -- 在user表新增資料,讓觸發器自動執行 insert into `user` values(1,'張三','123456'); -- 需求2:當user表資料被修改時,則會自動在user_log新增紀錄檔記錄 delimiter $$ create trigger trigger_test2 after update on user for each row begin insert into user_logs values(null,now(),'有使用者資訊被修改'); end $$ delimiter ; update `user` set password ='222222' where uid=1;
需求2結果是
格式
MySQL中定義了NEW和oLD,用來表示觸發器的所在表中,觸發了觸發器的那一行資料,來參照觸發器中發生變化的記錄內容,具體地:
觸發器型別 | 觸發器型別的new和old使用 |
insert型觸發器 | new表示將要或已經新增的資料 |
update型觸發器 | OLD表示修改之前的資料,NEW表示將要或已經修改後的資料 |
delete型觸發器 | OLD表示將要或者已經刪除的資料 |
使用方法
new.columname(columname為相應資料表某一列名)
演示
create trigger trigger_test3 after insert on user for each row begin insert into user_logs values(null,now(),concat('有新使用者新增,資訊為:',new.uid,new.username,new.password)) ; end; insert into `user` values(2,'李四','24234');
-- update create trigger trigger_test4 after update on user for each row begin insert into user_logs values(null,now(),concat_ws('--','使用者資訊有修改,修改後為:',new.uid,new.username,new.password)); end; update `user` set password='66666' where uid=2;
-- update create trigger trigger_test5 after update on user for each row begin insert into user_logs values(null,now(),concat_ws('--','使用者資訊有修改,修改後為:',new.uid,new.username,new.password, '使用者資訊有修改,修改前為:',old.uid,old.username,old.password)); end; update `user` set password='988765654' where uid=2;
1.MYSQL中觸發器中不能對本表進行insert ,update ,delete操作,以免遞迴迴圈觸發
2.儘量少使用觸發器,假設觸發器觸發每次執行1s,insert table 5o0o條資料,那麼就需要觸發5oo次觸發器,光是觸發器執行的時間就花費了500s,而insert 50o條資料一共是1s,那麼這個insert的效率就非常低了。
3.觸發器是針對每一行的;對增刪改非常頻繁的表上切記不要使用觸發器,因為它會非常消耗資源。
到此這篇關於一文帶你瞭解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