亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時(shí)間:2023年02月17日 10:34:43   作者:陽(yáng)862  
觸發(fā)器,就是一種特殊的存儲(chǔ)過(guò)程。觸發(fā)器和存儲(chǔ)過(guò)程一樣是一個(gè)能夠完成特定功能、存儲(chǔ)在數(shù)據(jù)庫(kù)服務(wù)器上的SQL片段。本文將通過(guò)簡(jiǎn)單的實(shí)力介紹一下觸發(fā)器的操作,需要的可以參考一下

概述

介紹

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

觸發(fā)器的特性

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

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

格式

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

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

操作

演示

create database if not exists test_trigger;
 
use test_trigger;
-- 用戶(hù)表
create table `user` (
	uid int primary key,
	username varchar(50) not null,
	password varchar(50) not null
);
-- 用戶(hù)信息操作日志表
create table user_logs(
	id int primary key auto_increment,
	time timestamp,
	log_text varchar(255)
);
 
-- 需求1:當(dāng)user表添加一行數(shù)據(jù),則會(huì)自動(dòng)在user_log添加日志記錄
-- 定義觸發(fā)器:trigger_test1
create trigger trigger_test1 after insert on user 
for each row 
insert into user_logs values(null,now(),'有新用戶(hù)添加');
 
-- 在user表添加數(shù)據(jù),讓觸發(fā)器自動(dòng)執(zhí)行
insert into `user` values(1,'張三','123456');

結(jié)果展示

create database if not exists test_trigger;
 
use test_trigger;
-- 用戶(hù)表
create table `user` (
	uid int primary key,
	username varchar(50) not null,
	password varchar(50) not null
);
-- 用戶(hù)信息操作日志表
create table user_logs(
	id int primary key auto_increment,
	time timestamp,
	log_text varchar(255)
);
 
-- 需求1:當(dāng)user表添加一行數(shù)據(jù),則會(huì)自動(dòng)在user_log添加日志記錄
-- 定義觸發(fā)器:trigger_test1
create trigger trigger_test1 after insert on user 
for each row 
insert into user_logs values(null,now(),'有新用戶(hù)添加');
 
-- 在user表添加數(shù)據(jù),讓觸發(fā)器自動(dòng)執(zhí)行
insert into `user` values(1,'張三','123456');
 
-- 需求2:當(dāng)user表數(shù)據(jù)被修改時(shí),則會(huì)自動(dòng)在user_log添加日志記錄
delimiter $$
create trigger trigger_test2 after update on user 
for each row 
begin 
	insert into user_logs values(null,now(),'有用戶(hù)信息被修改');
end $$
delimiter ;
 
update `user` set password ='222222' where uid=1;

需求2結(jié)果是

操作—new和old

格式

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

觸發(fā)器類(lèi)型觸發(fā)器類(lèi)型的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 user
for each row 
begin 
	insert into user_logs  values(null,now(),concat('有新用戶(hù)添加,信息為:',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('--','用戶(hù)信息有修改,修改后為:',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('--','用戶(hù)信息有修改,修改后為:',new.uid,new.username,new.password,
															'用戶(hù)信息有修改,修改前為:',old.uid,old.username,old.password));
end;
 
update `user`  set password='988765654' where uid=2;

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

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

注意事項(xiàng)

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

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

3.觸發(fā)器是針對(duì)每一行的;對(duì)增刪改非常頻繁的表上切記不要使用觸發(fā)器,因?yàn)樗鼤?huì)非常消耗資源。

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

相關(guān)文章

  • mysql表的四種分區(qū)方式總結(jié)

    mysql表的四種分區(qū)方式總結(jié)

    通俗地講表分區(qū)是將一大表,根據(jù)條件分割成若干個(gè)小表,下面這篇文章主要給大家介紹了關(guān)于mysql表的四種分區(qū)方式,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • 詳解MySQL中WHERE子句的用法

    詳解MySQL中WHERE子句的用法

    這篇文章主要介紹了詳解MySQL中WHERE子句的用法,是MySQL入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-05-05
  • 提高M(jìn)ySQL中InnoDB表BLOB列的存儲(chǔ)效率的教程

    提高M(jìn)ySQL中InnoDB表BLOB列的存儲(chǔ)效率的教程

    這篇文章主要介紹了提高M(jìn)ySQL中InnoDB表BLOB列的存儲(chǔ)效率的教程,InnoDB的優(yōu)化在MySQL的優(yōu)化研究中也是一個(gè)非常熱門(mén)的課題,需要的朋友可以參考下
    2015-05-05
  • MySQL Event Scheduler(事件調(diào)度器)

    MySQL Event Scheduler(事件調(diào)度器)

    事件調(diào)度器是在 MySQL 5.1 中新增的另一個(gè)特色功能,可以作為定時(shí)任務(wù)調(diào)度器,取代部分原先只能用操作系統(tǒng)任務(wù)調(diào)度器才能完成的定時(shí)功能。
    2010-06-06
  • mysql觸發(fā)器同步表的數(shù)據(jù)方式

    mysql觸發(fā)器同步表的數(shù)據(jù)方式

    這篇文章主要介紹了mysql觸發(fā)器同步表的數(shù)據(jù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • MySQL備份與恢復(fù)之熱備(3)

    MySQL備份與恢復(fù)之熱備(3)

    熱備使用mysqldump命令進(jìn)行備份,此工具是MySQL內(nèi)置的備份和恢復(fù)工具,功能強(qiáng)大,它可以對(duì)整個(gè)庫(kù)進(jìn)行備份,可以對(duì)多個(gè)庫(kù)進(jìn)行備份,可以對(duì)單張表或者某幾張表進(jìn)行備份,需要了解的朋友可以參考下
    2015-08-08
  • mysql慢查詢(xún)介紹及開(kāi)啟技巧詳解

    mysql慢查詢(xún)介紹及開(kāi)啟技巧詳解

    這篇文章主要為大家介紹了mysql慢查詢(xún)介紹及開(kāi)啟技巧詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • mysql?binlog?回滾示例解析

    mysql?binlog?回滾示例解析

    嚴(yán)格來(lái)說(shuō)mysqlbinlog 不能算回滾,他只是將過(guò)去的數(shù)據(jù)修改記錄 重新執(zhí)行一遍,但是從結(jié)果上來(lái)看,他也算把數(shù)據(jù)恢復(fù)到任意時(shí)間點(diǎn)了,這篇文章主要介紹了mysql?binlog回滾示例解析,需要的朋友可以參考下
    2023-08-08
  • mysqldump備份還原和mysqldump導(dǎo)入導(dǎo)出語(yǔ)句大全詳解

    mysqldump備份還原和mysqldump導(dǎo)入導(dǎo)出語(yǔ)句大全詳解

    這篇文章主要介紹了mysqldump備份還原和mysqldump導(dǎo)入導(dǎo)出語(yǔ)句大全詳解,需要的朋友可以參考下
    2014-05-05
  • Mysql主鍵和唯一鍵的區(qū)別點(diǎn)總結(jié)

    Mysql主鍵和唯一鍵的區(qū)別點(diǎn)總結(jié)

    在本篇文章中小編給大家分享了關(guān)于Mysql主鍵和唯一鍵的區(qū)別,有興趣的朋友們學(xué)習(xí)下吧。
    2019-02-02

最新評(píng)論