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

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

一文帶你了解MySQL中觸發器的操作

瀏覽:132日期:2023-02-18 16:43:53
目錄
  • 概述
    • 介紹
    • 觸發器的特性
  • 操作—創建觸發器
    • 操作—new和old
      • 操作—查看觸發器
        • 操作—刪除觸發器
          • 注意事項

            概述

            介紹

            • 觸發器,就是一種特殊的存儲過程。觸發器和存儲過程一樣是一個能夠完成特定功能、存儲在數據庫服務器上的SQL片段,但是觸發器無需調用,當對數據庫表中的數據執行DML操作時自動觸發這個SQL片段的執行,無需手動條用。
            • 在MySQL中,只有執行insert,delete,update操作時才能觸發觸發器的執行
            • 觸發器的這種特性可以協助應用在數據庫端確保數據的完整性,日志記錄,數據校驗等操作。
            • 使用別名OLD和NEW來引用觸發器中發生變化的記錄內容,這與其他的數據庫是相似的。現在觸發器還只支持行級觸發,不支持語句級觸發。

            觸發器的特性

            • 什么條件會觸發:l、D、U
            • 什么時候觸發:在增刪改前或者后
            • 觸發頻率:針對每一行執行
            • 觸發器定義在表上,附著在表上

            操作—創建觸發器

            格式

            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_test1create 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_test1create 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結果是

            操作—new和old

            格式

            MySQL中定義了NEW和oLD,用來表示觸發器的所在表中,觸發了觸發器的那一行數據,來引用觸發器中發生變化的記錄內容,具體地:

            觸發器類型觸發器類型的new和old使用insert型觸發器new表示將要或已經新增的數據update型觸發器OLD表示修改之前的數據,NEW表示將要或已經修改后的數據delete型觸發器OLD表示將要或者已經刪除的數據

            使用方法

            new.columname(columname為相應數據表某一列名)

            演示

            create trigger trigger_test3 after insert on userfor 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觸發器內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!

            標簽: MySQL
            相關文章:
            主站蜘蛛池模板: 变位机,焊接变位机,焊接变位器,小型变位机,小型焊接变位机-济南上弘机电设备有限公司 | 钢骨架轻型板_膨石轻型板_钢骨架轻型板价格_恒道新材料 | uv机-uv灯-uvled光固化机-生产厂家-蓝盾机电 | 高尔夫球杆_高尔夫果岭_高尔夫用品-深圳市新高品体育用品有限公司 | 卫浴散热器,卫浴暖气片,卫生间背篓暖气片,华圣格浴室暖气片 | 衢州装饰公司|装潢公司|办公楼装修|排屋装修|别墅装修-衢州佳盛装饰 | 灰板纸、灰底白、硬纸板等纸品生产商-金泊纸业 | 上海物流公司,上海货运公司,上海物流专线-优骐物流公司 | 污水处理设备,一体化泵站,一体化净水设备-「梦之洁环保设备厂家」 | 冷凝水循环试验箱-冷凝水试验箱-可编程高低温试验箱厂家-上海巨为(www.juweigroup.com) | 广东护栏厂家-广州护栏网厂家-广东省安麦斯交通设施有限公司 | 北京三友信电子科技有限公司-ETC高速自动栏杆机|ETC机柜|激光车辆轮廓测量仪|嵌入式车道控制器 | 台湾HIWIN上银直线模组|导轨滑块|TBI滚珠丝杆丝杠-深圳汉工 | 三佳互联一站式网站建设服务|网站开发|网站设计|网站搭建服务商 赛默飞Thermo veritiproPCR仪|ProFlex3 x 32PCR系统|Countess3细胞计数仪|371|3111二氧化碳培养箱|Mirco17R|Mirco21R离心机|仟诺生物 | 艺术生文化课培训|艺术生文化课辅导冲刺-济南启迪学校 | 二手电脑回收_二手打印机回收_二手复印机回_硒鼓墨盒回收-广州益美二手电脑回收公司 | 喷涂流水线,涂装流水线,喷漆流水线-山东天意设备科技有限公司 | 江西自考网-江西自学考试网 | 无锡网站建设_小程序制作_网站设计公司_无锡网络公司_网站制作 | 贝朗斯动力商城(BRCPOWER.COM) - 买叉车蓄电池上贝朗斯商城,价格更超值,品质有保障! | 东莞ERP软件_广州云ERP_中山ERP_台湾工厂erp系统-广东顺景软件科技有限公司 | 四川成都干燥设备_回转筒干燥机_脉冲除尘器_输送设备_热风炉_成都川工星科机电设备有限公司 | 吸音板,隔音板,吸音材料,吸音板价格,声学材料 - 佛山诺声吸音板厂家 | loft装修,上海嘉定酒店式公寓装修公司—曼城装饰 | 西安标准厂房_陕西工业厂房_西咸新区独栋厂房_长信科技产业园官方网站 | 河南中专学校|职高|技校招生-河南中职中专网 | 网站建设,北京网站建设,北京网站建设公司,网站系统开发,北京网站制作公司,响应式网站,做网站公司,海淀做网站,朝阳做网站,昌平做网站,建站公司 | 储气罐,真空罐,缓冲罐,隔膜气压罐厂家批发价格,空压机储气罐规格型号-上海申容压力容器集团有限公司 | 光伏家 - 太阳能光伏发电_分布式光伏发电_太阳能光伏网 | 工装定制/做厂家/公司_工装订做/制价格/费用-北京圣达信工装 | 智能型高压核相仪-自动开口闪点测试仪-QJ41A电雷管测试仪|上海妙定 | 升降机-高空作业车租赁-蜘蛛车-曲臂式伸缩臂剪叉式液压升降平台-脚手架-【普雷斯特公司厂家】 | 塑木弯曲试验机_铜带拉伸强度试验机_拉压力测试台-倾技百科 | 学生作文网_中小学生作文大全与写作指导 | 大连海岛旅游网>>大连旅游,大连海岛游,旅游景点攻略,海岛旅游官网 | 单柱拉力机-橡胶冲片机-哑铃裁刀-江都轩宇试验机械厂 | 深圳快餐店设计-餐饮设计公司-餐饮空间品牌全案设计-深圳市勤蜂装饰工程 | led冷热冲击试验箱_LED高低温冲击试验箱_老化试验箱-爱佩百科 | 高柔性拖链电缆_卷筒电缆_耐磨耐折聚氨酯电缆-玖泰特种电缆 | 517瓜水果特产网|一个专注特产好物的网站| 心肺复苏模拟人|医学模型|急救护理模型|医学教学模型上海康人医学仪器设备有限公司 |