Mysql中禁用與啟動(dòng)觸發(fā)器教程【推薦】
在使用MYSQL過(guò)程中,經(jīng)常會(huì)使用到觸發(fā)器,但是有時(shí)使用不當(dāng)會(huì)造成一些麻煩。有沒(méi)有一種辦法可以控制觸發(fā)器的調(diào)用呢?
觸發(fā)器顧名思義就是數(shù)據(jù)庫(kù)在一定的調(diào)條件自動(dòng)調(diào)用的SQL語(yǔ)句,觸發(fā)器拒絕了人工調(diào)用的過(guò)程,由數(shù)據(jù)庫(kù)MYSQL數(shù)據(jù)庫(kù)自動(dòng)的調(diào)用,執(zhí)行更加高效。
如何禁用觸發(fā)器呢?
1.新建兩張表:
表demo_1:
CREATE TABLE `demo_1` ( `ID` int(11) NOT NULL AUTO_INCREMENT COMMENT '主鍵', `STUNAME` varchar(32) DEFAULT NULL COMMENT '名字', `AGE` tinyint(4) DEFAULT NULL COMMENT '年齡', PRIMARY KEY (`ID`) ) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8;
表:demo_2
CREATE TABLE `demo_2` ( `ID` int(11) NOT NULL AUTO_INCREMENT COMMENT '主鍵', `STU_ID` int(11) DEFAULT NULL COMMENT '學(xué)生編號(hào)', `MATH` double DEFAULT NULL COMMENT '成績(jī)', PRIMARY KEY (`ID`) ) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;
2.然后給demo_1創(chuàng)建一個(gè)觸發(fā)器
DROP TRIGGER IF EXISTS `insertTragger`; DELIMITER ;; CREATE TRIGGER `insertTragger` AFTER INSERT ON `demo_1` FOR EACH ROW begin select ID INTO @v1 from demo_1 order by ID desc limit 1; Insert into demo_2(STU_ID, MATH) values(@v1, 98.5); end ;; DELIMITER ;
3.觸發(fā)器是:在demo_1中添加一條數(shù)據(jù)時(shí),demo_2中自動(dòng)添加一條數(shù)據(jù)。
4.但是我不想每次出入數(shù)據(jù)都觸發(fā)觸發(fā)器呢,只有在我想觸發(fā)的時(shí)候才觸發(fā)。
重新編寫觸發(fā)器:
DROP TRIGGER IF EXISTS `insertTragger`; DELIMITER ;; CREATE TRIGGER `insertTragger` AFTER INSERT ON `demo_1` FOR EACH ROW begin if @enable_trigger = 1 then select ID INTO @v1 from demo_1 order by ID desc limit 1; Insert into demo_2(STU_ID, MATH) values(@v1, 98.5); end if; end ;; DELIMITER ;
5.調(diào)用觸發(fā)器
SET @enable_trigger = 1; INSERT INTO demo_1(STUNAME , AGE) VALUES(‘小強(qiáng)', 17); 執(zhí)行之后,表demo_1中增加一條數(shù)據(jù) 2 小強(qiáng) 17 表demo_2中同樣也增加一條數(shù)據(jù) 2 2 98.5
6.禁用觸法器
SET @enable_trigger = 0; INSERT INTO demo_1(STUNAME , AGE) VALUES(‘小強(qiáng)', 17); 執(zhí)行之后: 執(zhí)行之后,表demo_1中增加一條數(shù)據(jù) 2 小強(qiáng) 17
表demo_2中沒(méi)有增加任何數(shù)據(jù)
以上就解決了觸發(fā)器的靈活調(diào)用。
總結(jié)
以上所述是小編給大家介紹的Mysql中禁用與啟動(dòng)觸發(fā)器教程,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- mysql 觸發(fā)器語(yǔ)法與應(yīng)用示例
- MySql視圖觸發(fā)器存儲(chǔ)過(guò)程詳解
- mysql觸發(fā)器原理與用法實(shí)例分析
- mysql日志觸發(fā)器實(shí)現(xiàn)代碼
- mysql觸發(fā)器之觸發(fā)器的增刪改查操作示例
- mysql觸發(fā)器之創(chuàng)建多個(gè)觸發(fā)器操作實(shí)例分析
- mysql觸發(fā)器之創(chuàng)建使用觸發(fā)器簡(jiǎn)單示例
- mysql觸發(fā)器簡(jiǎn)介、創(chuàng)建觸發(fā)器及使用限制分析
- MySQL 觸發(fā)器定義與用法簡(jiǎn)單實(shí)例
- MySQL觸發(fā)器概念、原理與用法詳解
- 詳解MySQL數(shù)據(jù)庫(kù)之觸發(fā)器
相關(guān)文章
mysql中max_allowed_packet參數(shù)的配置方法(避免大數(shù)據(jù)寫入或者更新失?。?/a>
這篇文章主要介紹了mysql中max_allowed_packet參數(shù)的配置方法,以及查看max_allowed_packet參數(shù)當(dāng)前值的方法,需要的朋友可以參考下2014-05-05
MySql修改密碼后phpMyAdmin無(wú)法登陸的解決方法
這篇文章主要為大家詳細(xì)介紹了MySql修改密碼后PhpMyAdmin無(wú)法登陸的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01
MySQL學(xué)習(xí)之日期函數(shù)的用法詳解
本文將學(xué)習(xí)MySQL的日期函數(shù),在前面章節(jié)的練習(xí)中,我們就利用過(guò)NOW()函數(shù)來(lái)獲取過(guò)當(dāng)前系統(tǒng)時(shí)間,用DATEDIFF函數(shù)來(lái)計(jì)算日期相差的天數(shù),接下來(lái)我們就系統(tǒng)的學(xué)習(xí)一下 日期函數(shù)2022-08-08
MySQL?原理與優(yōu)化之原數(shù)據(jù)鎖的應(yīng)用
這篇文章主要介紹了MySQL?原理與優(yōu)化之原數(shù)據(jù)鎖的應(yīng)用,MySQL?中原數(shù)據(jù)鎖是系統(tǒng)自動(dòng)控制添加的,對(duì)于用戶來(lái)說(shuō)無(wú)需顯示調(diào)用,當(dāng)我們使用一張表的時(shí)候就會(huì)加上原數(shù)據(jù)鎖2022-08-08
MySQL數(shù)據(jù)庫(kù)聚合函數(shù)與分組查詢舉例詳解
在MySQL中聚合函數(shù)和分組查詢經(jīng)常一起使用,下面這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫(kù)聚合函數(shù)與分組查詢的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01
MySQL中使用CTE獲取時(shí)間段數(shù)據(jù)的技巧分享
在數(shù)據(jù)庫(kù)操作中,獲取特定時(shí)間段的數(shù)據(jù)是一項(xiàng)常見(jiàn)任務(wù),MySQL自從8.0版本開始支持CTE(公共表表達(dá)式),使得我們可以更加靈活和高效地處理時(shí)間段數(shù)據(jù),本文小編介紹了MySQL中使用CTE獲取時(shí)間段數(shù)據(jù)的技巧分享,需要的朋友可以參考下2024-08-08
mysql實(shí)現(xiàn)merge into問(wèn)題
文章介紹了在數(shù)據(jù)庫(kù)操作中,如何使用`REPLACE INTO`和`INSERT INTO ON DUPLICATE KEY UPDATE`語(yǔ)句進(jìn)行數(shù)據(jù)更新和插入操作,如果不想創(chuàng)建唯一性索引,可以通過(guò)存儲(chǔ)過(guò)程實(shí)現(xiàn),文章通過(guò)實(shí)驗(yàn)和驗(yàn)證,展示了這兩種方法的實(shí)際效果2024-12-12
php運(yùn)行提示Can''t connect to MySQL server on ''localhost''的解決方法
有些時(shí)候我們運(yùn)行php的時(shí)候,頁(yè)面提示Can't connect to MySQL server on 'localhost',那么就需要參考下面的方法來(lái)解決。2011-06-06

