电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

MySQL 觸發器的使用和理解

瀏覽:148日期:2023-10-05 13:00:22
1.觸發器是什么?

一類特殊的數據庫程序,可以監視某種數據的操作(insert/update/delete),并觸發相關的操作(insert/update/delete),保護數據的完整性。

個人理解就有點類似于Java的觀察者模式,一個對象變化,觀察者也跟著做出響應。

Mysql好像是從5.0以后開始支持觸發器的。

2.創建觸發器

創建觸發器我將介紹兩種方式:用語句創建,用navicat創建。

創建觸發器的語法如下:

CREATE TRIGGER trigger_name trigger_time trigger_event ON tb_name FOR EACH ROW trigger_stmttrigger_name:觸發器的名稱tirgger_time:觸發時機,為BEFORE或者AFTERtrigger_event:觸發事件,為INSERT、DELETE或者UPDATEtb_name:表示建立觸發器的表明,就是在哪張表上建立觸發器trigger_stmt:觸發器的程序體,可以是一條SQL語句或者是用BEGIN和END包含的多條語句所以可以說MySQL創建以下六種觸發器:BEFORE INSERT,BEFORE DELETE,BEFORE UPDATEAFTER INSERT,AFTER DELETE,AFTER UPDATE

其中,觸發器名參數指要創建的觸發器的名字

BEFORE和AFTER參數指定了觸發執行的時間,在事件之前或是之后

FOR EACH ROW表示任何一條記錄上的操作滿足觸發事件都會觸發該觸發器

創建多個執行語句的觸發器:

CREATE TRIGGER 觸發器名 BEFORE|AFTER 觸發事件ON 表名 FOR EACH ROWBEGIN 執行語句列表END NEW和OLD的使用:

觸發器類型 new和old的使用 insert new代表新增的數據 update new代表更新后的數據,old代表更新前的數據 delete old代表要刪除的數據

某一個字段可以用new/lod.字段名

接下來我們創建2個表用來測試:

stu表:主表(被觀察者)

MySQL 觸發器的使用和理解

DROP TABLE IF EXISTS `stu`;CREATE TABLE `stu` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT ’id’,`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT ’姓名’,`age` int(11) NULL DEFAULT NULL COMMENT ’年齡’,`sort` int(11) NULL DEFAULT NULL COMMENT ’排序字段’,PRIMARY KEY (`id`) USING BTREE) ENGINE = InnoDB AUTO_INCREMENT = 18 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

stu_log表:觸發器關聯表(觀察者)

MySQL 觸發器的使用和理解

DROP TABLE IF EXISTS `stu_log`;CREATE TABLE `stu_log` (`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,`create_time` datetime(0) NULL DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

現在我們假設有這樣一個業務,在stu表新增和刪除數據時,同步在stu_log中記錄日志,記錄name和時間。

如果不使用觸發器,我們就需要編寫代碼來實現這個需求,但是觸發器可以幫我們輕松的實現。

首先我們使用語句來創建一個insert觸發器:

DROP TRIGGER IF EXISTS `insert_log`;delimiter ;;CREATE TRIGGER `add_log` AFTER INSERT ON `stu` FOR EACH ROW BEGININSERT INTO stu_log(name,create_time) VALUES(new.`name`,now());END;;delimiter ;

執行結果:

MySQL 觸發器的使用和理解

然后我們再用navicat創建一個delete觸發器:

step1:右鍵stu表,選擇設計表----觸發器

MySQL 觸發器的使用和理解

step2:如圖所示填選,選擇刪除前觸發

MySQL 觸發器的使用和理解

step3:在下方定義框內寫執行語句,如圖 記得點保存!

MySQL 觸發器的使用和理解

語句:

beginINSERT INTO stu_log(name,create_time) VALUES(old.`name`,now());end3.使用觸發器

測試一下:新增一條數據

insert into stu (name,age) VALUES(’李白’,36)

查看stu表和stu_log表:

MySQL 觸發器的使用和理解

MySQL 觸發器的使用和理解

如圖,觸發器已經生效了!

測試刪除一條數據

DELETE from stu where name = ’李白’

查看stu表和stu_log表:

MySQL 觸發器的使用和理解

MySQL 觸發器的使用和理解

如圖,觸發器已經生效了!

以上就是MySQL 觸發器的使用和理解的詳細內容,更多關于MySQL 觸發器的資料請關注好吧啦網其它相關文章!

標簽: MySQL 數據庫
相關文章:
主站蜘蛛池模板: 湖南长沙商标注册专利申请,长沙公司注册代理记账首选美创! | 深圳美安可自动化设备有限公司,喷码机,定制喷码机,二维码喷码机,深圳喷码机,纸箱喷码机,东莞喷码机 UV喷码机,日期喷码机,鸡蛋喷码机,管芯喷码机,管内壁喷码机,喷码机厂家 | 商秀—企业短视频代运营_抖音企业号托管 | 滚筒烘干机_转筒烘干机_滚筒干燥机_转筒干燥机_回转烘干机_回转干燥机-设备生产厂家 | 磁力抛光机_磁力研磨机_磁力去毛刺机-冠古设备厂家|维修|租赁【官网】 | 【直乐】河北石家庄脊柱侧弯医院_治疗椎间盘突出哪家医院好_骨科脊柱外科专业医院_治疗抽动症/关节病骨伤权威医院|排行-直乐矫形中医医院 | pH污水传感器电极,溶解氧电极传感器-上海科蓝仪表科技有限公司 | 河南橡胶接头厂家,河南波纹补偿器厂家,河南可曲挠橡胶软连接,河南套筒补偿器厂家-河南正大阀门 | 电机铸铝配件_汽车压铸铝合金件_发动机压铸件_青岛颖圣赫机械有限公司 | POM塑料_PBT材料「进口」聚甲醛POM杜邦原料、加纤PBT塑料报价格找利隆塑料 | 石家庄律师_石家庄刑事辩护律师_石家庄取保候审-河北万垚律师事务所 | 拉力机-拉力试验机-万能试验机-电子拉力机-拉伸试验机-剥离强度试验机-苏州皖仪实验仪器有限公司 | 东莞工厂厂房装修_无尘车间施工_钢结构工程安装-广东集景建筑装饰设计工程有限公司 | 商用绞肉机-熟肉切片机-冻肉切丁机-猪肉开条机 - 广州市正盈机械设备有限公司 | 中山市派格家具有限公司【官网】 | 气胀轴|气涨轴|安全夹头|安全卡盘|伺服纠偏系统厂家-天机传动 | 避光流动池-带盖荧光比色皿-生化流动比色皿-宜兴市晶科光学仪器 东莞爱加真空科技有限公司-进口真空镀膜机|真空镀膜设备|Polycold维修厂家 | 【灵硕展览集团】展台展会设计_展览会展台搭建_展览展示设计一站式服务公司 | 北京中航时代-耐电压击穿试验仪厂家-电压击穿试验机 | 福建成考网-福建成人高考网| 深圳市源和塑胶电子有限公司-首页 | 合肥防火门窗/隔断_合肥防火卷帘门厂家_安徽耐火窗_良万消防设备有限公司 | 氮化镓芯片-碳化硅二极管 - 华燊泰半导体 | ET3000双钳形接地电阻测试仪_ZSR10A直流_SXJS-IV智能_SX-9000全自动油介质损耗测试仪-上海康登 | 柴油发电机组_柴油发电机_发电机组价格-江苏凯晨电力设备有限公司 | POS机办理_个人pos机免费领取-银联pos机申请首页 | 招商帮-一站式网络营销服务|互联网整合营销|网络推广代运营|信息流推广|招商帮企业招商好帮手|搜索营销推广|短视视频营销推广 | 西点培训学校_法式西点培训班_西点师培训_西点蛋糕培训-广州烘趣西点烘焙培训学院 | 电动打包机_气动打包机_钢带捆扎机_废纸打包机_手动捆扎机 | 磁粉制动器|张力控制器|气胀轴|伺服纠偏控制器整套厂家--台灵机电官网 | 阴离子聚丙烯酰胺价格_PAM_高分子聚丙烯酰胺厂家-河南泰航净水材料有限公司 | 品牌设计_VI设计_电影海报设计_包装设计_LOGO设计-Bacross新越品牌顾问 | 空气净化器租赁,空气净化器出租,全国直租_奥司汀净化器租赁 | 次氯酸钠厂家,涉水级次氯酸钠,三氯化铁生产厂家-淄博吉灿化工 | 冲锋衣滑雪服厂家-冲锋衣定制工厂-滑雪服加工厂-广东睿牛户外(S-GERT) | 污水提升器,污水提升泵,污水提升装置-德国泽德(zehnder)水泵系统有限公司 | 早报网| 西安文都考研官网_西安考研辅导班_考研培训机构_西安在职考研培训 | vr安全体验馆|交通安全|工地安全|禁毒|消防|安全教育体验馆|安全体验教室-贝森德(深圳)科技 | 玻璃钢罐_玻璃钢储罐_盐酸罐厂家-河北华盛节能设备有限公司 | 塑料撕碎机_编织袋撕碎机_废纸撕碎机_生活垃圾撕碎机_废铁破碎机_河南鑫世昌机械制造有限公司 |