亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術(shù)文章
文章詳情頁

一文帶你了解MySQL中觸發(fā)器的操作

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

            概述

            介紹

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

            觸發(fā)器的特性

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

            操作—創(chuàng)建觸發(fā)器

            格式

            1.創(chuàng)建只有一個執(zhí)行語句的觸發(fā)器

            2.創(chuàng)建有多個執(zhí)行語句的觸發(fā)器

            操作

            演示

            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:當(dāng)user表添加一行數(shù)據(jù),則會自動在user_log添加日志記錄-- 定義觸發(fā)器:trigger_test1create trigger trigger_test1 after insert on user for each row insert into user_logs values(null,now(),"有新用戶添加"); -- 在user表添加數(shù)據(jù),讓觸發(fā)器自動執(zhí)行insert into `user` values(1,"張三","123456");

            結(jié)果展示

            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:當(dāng)user表添加一行數(shù)據(jù),則會自動在user_log添加日志記錄-- 定義觸發(fā)器:trigger_test1create trigger trigger_test1 after insert on user for each row insert into user_logs values(null,now(),"有新用戶添加"); -- 在user表添加數(shù)據(jù),讓觸發(fā)器自動執(zhí)行insert into `user` values(1,"張三","123456"); -- 需求2:當(dāng)user表數(shù)據(jù)被修改時,則會自動在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結(jié)果是

            操作—new和old

            格式

            MySQL中定義了NEW和oLD,用來表示觸發(fā)器的所在表中,觸發(fā)了觸發(fā)器的那一行數(shù)據(jù),來引用觸發(fā)器中發(fā)生變化的記錄內(nèi)容,具體地:

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

            使用方法

            new.columname(columname為相應(yīng)數(shù)據(jù)表某一列名)

            演示

            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;

            操作—查看觸發(fā)器

            操作—刪除觸發(fā)器

            注意事項

            1.MYSQL中觸發(fā)器中不能對本表進行insert ,update ,delete操作,以免遞歸循環(huán)觸發(fā)

            2.盡量少使用觸發(fā)器,假設(shè)觸發(fā)器觸發(fā)每次執(zhí)行1s,insert table 5o0o條數(shù)據(jù),那么就需要觸發(fā)5oo次觸發(fā)器,光是觸發(fā)器執(zhí)行的時間就花費了500s,而insert 50o條數(shù)據(jù)一共是1s,那么這個insert的效率就非常低了。

            3.觸發(fā)器是針對每一行的;對增刪改非常頻繁的表上切記不要使用觸發(fā)器,因為它會非常消耗資源。

            到此這篇關(guān)于一文帶你了解MySQL中觸發(fā)器的操作的文章就介紹到這了,更多相關(guān)MySQL觸發(fā)器內(nèi)容請搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!

            標簽: MySQL
            相關(guān)文章:
            主站蜘蛛池模板: 国产精品剧情原创麻豆国产 | 男女国产一级毛片 | 日本免费乱人伦在线观看 | 视频办公室添的我好爽 | 一级二级三级黄色片 | 成年人免费大片 | 亚洲网视频 | 一区国产传媒国产精品 | 8mav模特福利视频在线观看 | 国产精品久久久久国产精品三级 | 婷婷丁香六月天 | 98国产精品永久在线观看 | 国产精品久久久久久久午夜片 | 国产成+人+亚洲+欧美综合 | 啪啪午夜视频 | 污污视频在线观看黄 | 国产精品视频大全 | 久久精品黄色 | 在线观看91 | 欧美一级精品高清在线观看 | 九九免费精品视频在这里 | 在线观看网站黄 | 国产99视频精品免费视频7 | 久久精品国产亚洲香蕉 | 草逼免费视频 | 制服丝袜中文字幕在线 | 丝袜美腿在线观看 | 99草视频 | 全免费毛片在线播放 | 国产视频一二 | 一 级 黄 色生活片 一 级 黄 色蝶 片 | 黄色三 | 色婷婷亚洲综合五月 | 337p粉嫩大胆噜噜噜鲁 | 香蕉视频在线观看www | 日本大片久久久高清免费看 | 91精品国产薄丝高跟在线看 | 久久综合性 | 免费播放aa在线视频成人 | 亚洲国产视频一区 | baoyu在线观看地址 |