成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

MySQL中創(chuàng)建觸發(fā)器需要執(zhí)行哪些操作?

數(shù)據(jù)庫 MySQL
觸發(fā)器,就是一種特殊的存儲(chǔ)過程。觸發(fā)器和存儲(chǔ)過程一樣是一個(gè)能夠完成特定功能、存儲(chǔ)在數(shù)據(jù)庫服務(wù)器上的SQL片段,但是觸發(fā)器無需調(diào)用,當(dāng)對數(shù)據(jù)庫表中的數(shù)據(jù)執(zhí)行DML操作時(shí)自動(dòng)觸發(fā)這個(gè)SQL片段的執(zhí)行,無需手動(dòng)調(diào)用。

什么是觸發(fā)器

觸發(fā)器,就是一種特殊的存儲(chǔ)過程。觸發(fā)器和存儲(chǔ)過程一樣是一個(gè)能夠完成特定功能、存儲(chǔ)在數(shù)據(jù)庫服務(wù)器上的SQL片段,但是觸發(fā)器無需調(diào)用,當(dāng)對數(shù)據(jù)庫表中的數(shù)據(jù)執(zhí)行DML操作時(shí)自動(dòng)觸發(fā)這個(gè)SQL片段的執(zhí)行,無需手動(dòng)調(diào)用。觸發(fā)器的這種特性可以協(xié)助應(yīng)用在數(shù)據(jù)庫端確保數(shù)據(jù)的完整性 , 日志記錄 , 數(shù)據(jù)校驗(yàn)等操作 。在MySQL中,只有執(zhí)行insert,delete,update操作時(shí)才能觸發(fā)觸發(fā)器的執(zhí)行。

使用別名 OLD 和 NEW 來引用觸發(fā)器中發(fā)生變化的記錄內(nèi)容,這與其他的數(shù)據(jù)庫是相似的。現(xiàn)在觸發(fā)器還只支持行級觸發(fā),不支持語句級觸發(fā)。

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

創(chuàng)建只有一個(gè)執(zhí)行語句的觸發(fā)器,具體代碼如下:

create trigger 觸發(fā)器名 before|after 觸發(fā)事件
on 表名 for each row 
執(zhí)行語句;

創(chuàng)建有多個(gè)執(zhí)行語句的觸發(fā)器的具體代碼如下:

create trigger 觸發(fā)器名 before|after  觸發(fā)事件 
on 表名 for each row
begin
     執(zhí)行語句列表
end;
-- 數(shù)據(jù)準(zhǔn)備
create database if not exists mydb10_trigger;
use mydb10_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)
);
-- 如果觸發(fā)器存在,則先刪除
drop trigger if  exists trigger_test1;
 
-- 創(chuàng)建觸發(fā)器trigger_test1
create trigger trigger_test1
after insert on user -- 觸發(fā)時(shí)機(jī):當(dāng)添加user表數(shù)據(jù)時(shí)觸發(fā)
for each row
insert into user_logs values(NULL,now(), '有新用戶注冊');
 
-- 添加數(shù)據(jù),觸發(fā)器自動(dòng)執(zhí)行并添加日志代碼
insert into user values(1,'張三','123456');
-- 如果觸發(fā)器trigger_test2存在,則先刪除
drop trigger if exists trigger_test2;

-- 創(chuàng)建觸發(fā)器trigger_test2
delimiter $$
create trigger trigger_test2
after update on user  -- 觸發(fā)時(shí)機(jī):當(dāng)修改user表數(shù)據(jù)時(shí)觸發(fā)
for each row -- 每一行
begin
insert into user_logs values(NULL,now(), '用戶修改發(fā)生了修改');
end $$
 
delimiter ;
 
-- 添加數(shù)據(jù),觸發(fā)器自動(dòng)執(zhí)行并添加日志代碼
update user set password = '888888' where uid = 1;

操作-NEW與OLD

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

使用方法:NEW.columnName (columnName為相應(yīng)數(shù)據(jù)表某一列名)示例代碼如下:

create trigger trigger_test3 after insert
on user for each row
insert into user_logs values(NULL,now(),concat('有新用戶添加,信息為:',NEW.uid,NEW.username,NEW.password));
 
-- 測試
insert into user values(4,'趙六','123456');

查看觸發(fā)器可以使用入下代碼:

show triggers;

刪除觸發(fā)器可以使用入下代碼:

-- drop trigger [if exists] trigger_name 
drop trigger if exists trigger_test1;

注意:

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

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

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

責(zé)任編輯:華軒 來源: 今日頭條
相關(guān)推薦

2010-05-18 15:36:44

MySQL觸發(fā)器

2010-10-11 14:52:43

Mysql觸發(fā)器

2009-12-24 17:52:05

WPF觸發(fā)器

2010-06-13 09:46:44

MySQL5觸發(fā)器

2010-05-18 14:35:06

MySQL觸發(fā)器

2010-04-23 12:50:46

Oracle觸發(fā)器

2010-04-15 15:32:59

Oracle操作日志

2011-05-20 14:06:25

Oracle觸發(fā)器

2021-07-30 10:33:57

MySQL觸發(fā)器數(shù)據(jù)

2010-05-18 15:58:39

MySQL觸發(fā)器

2010-05-31 18:06:07

MySQL 觸發(fā)器

2010-10-12 10:04:15

MySQL觸發(fā)器

2010-10-12 10:24:58

mysql觸發(fā)器

2010-07-16 10:19:31

2010-05-19 11:25:46

MySQL觸發(fā)器

2010-05-26 17:57:44

MySQL 觸發(fā)器

2010-10-12 10:10:55

mysql觸發(fā)器

2010-07-05 11:09:55

SQL Server觸

2010-10-12 09:41:26

mysql觸發(fā)器

2010-10-12 10:38:29

mysql觸發(fā)器
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 亚洲 精品 综合 精品 自拍 | 久久久日韩精品一区二区三区 | 精品国产伦一区二区三区观看体验 | 日韩成人高清在线 | 日韩一级免费观看 | 成人免费三级电影 | 国产日韩精品在线 | 久艹网站 | 涩涩鲁亚洲精品一区二区 | 免费国产视频 | 亚洲电影第三页 | 99免费 | 男女羞羞视频在线看 | 黄视频网站在线 | 午夜影院免费体验区 | 野狼在线社区2017入口 | 久久精品久久精品久久精品 | 国产在线一区二区三区 | 国产在视频一区二区三区吞精 | 粉嫩一区二区三区国产精品 | h在线 | 亚洲国产精品99久久久久久久久 | 国产区在线 | 中文字幕视频在线观看 | 国产人成精品一区二区三 | 国产中文字幕在线 | 国产网站在线免费观看 | 精品亚洲一区二区三区四区五区 | 亚洲系列第一页 | 五月婷婷丁香婷婷 | 中文字幕一级毛片 | 国产午夜精品一区二区三区嫩草 | av资源中文在线天堂 | 欧美一级片在线观看 | 亚洲伊人久久综合 | 成人一区二区三区在线观看 | 精品av天堂毛片久久久借种 | 亚洲一一在线 | 天堂中文在线播放 | 亚洲v区| 99福利|