Mysql中禁用與啟動觸發(fā)器教程【推薦】
在使用MYSQL過程中,經(jīng)常會使用到觸發(fā)器,但是有時使用不當(dāng)會造成一些麻煩。有沒有一種辦法可以控制觸發(fā)器的調(diào)用呢?
觸發(fā)器顧名思義就是數(shù)據(jù)庫在一定的調(diào)條件自動調(diào)用的SQL語句,觸發(fā)器拒絕了人工調(diào)用的過程,由數(shù)據(jù)庫MYSQL數(shù)據(jù)庫自動的調(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é)生編號', `MATH` double DEFAULT NULL COMMENT '成績', PRIMARY KEY (`ID`) ) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;
2.然后給demo_1創(chuàng)建一個觸發(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ù)時,demo_2中自動添加一條數(shù)據(jù)。
4.但是我不想每次出入數(shù)據(jù)都觸發(fā)觸發(fā)器呢,只有在我想觸發(fā)的時候才觸發(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(‘小強', 17); 執(zhí)行之后,表demo_1中增加一條數(shù)據(jù) 2 小強 17 表demo_2中同樣也增加一條數(shù)據(jù) 2 2 98.5
6.禁用觸法器
SET @enable_trigger = 0; INSERT INTO demo_1(STUNAME , AGE) VALUES(‘小強', 17); 執(zhí)行之后: 執(zhí)行之后,表demo_1中增加一條數(shù)據(jù) 2 小強 17
表demo_2中沒有增加任何數(shù)據(jù)
以上就解決了觸發(fā)器的靈活調(diào)用。
總結(jié)
以上所述是小編給大家介紹的Mysql中禁用與啟動觸發(fā)器教程,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
- mysql 觸發(fā)器語法與應(yīng)用示例
- MySql視圖觸發(fā)器存儲過程詳解
- mysql觸發(fā)器原理與用法實例分析
- mysql日志觸發(fā)器實現(xiàn)代碼
- mysql觸發(fā)器之觸發(fā)器的增刪改查操作示例
- mysql觸發(fā)器之創(chuàng)建多個觸發(fā)器操作實例分析
- mysql觸發(fā)器之創(chuàng)建使用觸發(fā)器簡單示例
- mysql觸發(fā)器簡介、創(chuàng)建觸發(fā)器及使用限制分析
- MySQL 觸發(fā)器定義與用法簡單實例
- MySQL觸發(fā)器概念、原理與用法詳解
- 詳解MySQL數(shù)據(jù)庫之觸發(fā)器
相關(guān)文章
Mysql中自定義函數(shù)的創(chuàng)建和執(zhí)行方式
這篇文章主要介紹了Mysql中自定義函數(shù)的創(chuàng)建和執(zhí)行方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-03-03Centos7下安裝和配置MySQL5.7.20的詳細(xì)教程
這篇文章主要介紹了Linux(CentOS7)下安裝和配置MySQL5.7.20詳細(xì)教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價,需要的朋友可以參考下2020-05-05安裝mysql-8.0.19-winx64遇到的問題:Can''t create directory ''xxxx\Da
這篇文章主要介紹了安裝mysql-8.0.19-winx64遇到的坑 ,Can't create directory 'xxxx\Database\',非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2020-02-02