欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁(yè) > 知識(shí)庫(kù) > MySQL中觸發(fā)器和游標(biāo)的介紹與使用

MySQL中觸發(fā)器和游標(biāo)的介紹與使用

熱門標(biāo)簽:電話外呼系統(tǒng)改號(hào) 武漢網(wǎng)絡(luò)外呼系統(tǒng)服務(wù)商 怎樣在地圖標(biāo)注銷售區(qū)域 百應(yīng)電話機(jī)器人優(yōu)勢(shì) 啥是企業(yè)400電話辦理 曲靖移動(dòng)外呼系統(tǒng)公司 外呼系統(tǒng)打電話上限是多少 地圖標(biāo)注費(fèi)用是多少 南昌三維地圖標(biāo)注

觸發(fā)器簡(jiǎn)介

觸發(fā)器是和表關(guān)聯(lián)的特殊的存儲(chǔ)過程,可以在插入,刪除或修改表中的數(shù)據(jù)時(shí)觸發(fā)執(zhí)行,比數(shù)據(jù)庫(kù)本身標(biāo)準(zhǔn)的功能有更精細(xì)和更復(fù)雜的數(shù)據(jù)控制能力。

觸發(fā)器的優(yōu)點(diǎn):

  • 安全性:可以基于數(shù)據(jù)庫(kù)的值使用戶具有操作數(shù)據(jù)庫(kù)的某種權(quán)利。例如不允許下班后和節(jié)假日修改數(shù)據(jù) 庫(kù)數(shù)據(jù);
  • 審計(jì):可以跟蹤用戶對(duì)數(shù)據(jù)庫(kù)的操作;
  • 實(shí)現(xiàn)復(fù)雜的數(shù)據(jù)完整性規(guī)則。例如,觸發(fā)器可回退任何企圖吃進(jìn)超過自己保證金的期貨;
  • 提供了運(yùn)行計(jì)劃任務(wù)的另一種方法。例如,如果公司的帳號(hào)上的資金低于 5 萬元?jiǎng)t立即給財(cái)務(wù)人員發(fā)送 警告數(shù)據(jù)。

MySQL 中使用觸發(fā)器

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

創(chuàng)建觸發(fā)器的技巧就是記住觸發(fā)器的四要素:

  • 監(jiān)控地點(diǎn):table;
  • 監(jiān)控事件:insert/update/delete;
  • 觸發(fā)時(shí)間:after/before;
  • 觸發(fā)事件:insert/update/delete。

創(chuàng)建觸發(fā)器的基本語(yǔ)法如下所示:

CREATE TRIGGER
-- trigger_name:觸發(fā)器的名稱; 
-- tirgger_time:觸發(fā)時(shí)機(jī),為 BEFORE 或者 AFTER;
-- trigger_event:觸發(fā)事件,為 INSERT、DELETE 或者 UPDATE; 
 trigger_name trigger_time trigger_event 
 ON
 -- tb_name:表示建立觸發(fā)器的表名,在哪張表上建立觸發(fā)器;
 tb_name
 -- FOR EACH ROW 表示任何一條記錄上的操作滿足觸發(fā)事件都會(huì)觸發(fā)該觸發(fā)器。
 FOR EACH ROW
 -- trigger_stmt:觸發(fā)器的程序體,可以是一條 SQL 語(yǔ)句或者是用 BEGIN 和 END 包含的多條語(yǔ)句; 
 trigger_stmt
  • trigger_name:觸發(fā)器的名稱;
  • tirgger_time:觸發(fā)時(shí)機(jī),為 BEFORE 或者 AFTER;
  • trigger_event:觸發(fā)事件,為 INSERT、DELETE 或者 UPDATE;
  • tb_name:表示建立觸發(fā)器的表名,在哪張表上建立觸發(fā)器;
  • trigger_stmt:觸發(fā)器的程序體,可以是一條 SQL 語(yǔ)句或者是用 BEGIN 和 END 包含的多條語(yǔ)句;
  • FOR EACH ROW 表示任何一條記錄上的操作滿足觸發(fā)事件都會(huì)觸發(fā)該觸發(fā)器。

注意:對(duì)同一個(gè)表相同觸發(fā)時(shí)間的相同觸發(fā)事件,只能定義一個(gè)觸發(fā)器。

觸發(fā)器新舊記錄

MySQL 中定義了 NEW 和 OLD,用來表示觸發(fā)器的所在表中,觸發(fā)了觸發(fā)器的那一行數(shù)據(jù):

  • 在 INSERT 型觸發(fā)器中,NEW 用來表示將要(BEFORE或已經(jīng)(AFTER)插入的新數(shù)據(jù);
  • 在 UPDATE型觸發(fā)器中,OLD 用來表示將要或已經(jīng)被修改的原數(shù)據(jù),NEW 用來表示將要或已經(jīng)修改為的新 數(shù)據(jù);
  • 在 DELETE型觸發(fā)器中,OLD 用來表示將要或已經(jīng)被刪除的原數(shù)據(jù)。

創(chuàng)建觸發(fā)器,當(dāng)用戶購(gòu)買商品時(shí),同時(shí)更新對(duì)應(yīng)商品庫(kù)存記錄,代碼如下所示:

-- 刪除觸發(fā)器,drop trigger 觸發(fā)器名稱
-- if exists判斷存在才會(huì)刪除
drop trigger if exists myty1;
-- 創(chuàng)建觸發(fā)器
create trigger mytg1-- myty1觸發(fā)器的名稱
after insert on orders-- orders在哪張表上建立觸發(fā)器;
for each row
begin
	update product set num = num-new.num where pid=new.pid;
end;
-- 往訂單表插入記錄
insert into orders values(null,2,1);
-- 查詢商品表商品庫(kù)存更新情況
select * from product;

創(chuàng)建觸發(fā)器,當(dāng)用戶刪除訂單時(shí),同時(shí)更新對(duì)應(yīng)商品庫(kù)存記錄,代碼如下所示:

-- 創(chuàng)建觸發(fā)器
create trigger mytg2
after delete on orders
for each ROW
begin 
-- 對(duì)庫(kù)存進(jìn)行回退,重新加上
	update product set num = num+old.num where pid=old.pid;
end;
-- 刪除訂單記錄
delete from orders where oid = 2;
-- 查詢商品表商品庫(kù)存更新情況
select * from product;

before 和 after 的區(qū)別

before 在執(zhí)行語(yǔ)句之前after 在執(zhí)行語(yǔ)句之后

當(dāng)訂單商品數(shù)量超過庫(kù)存時(shí),修改訂單數(shù)量為最大庫(kù)存:

-- -- 創(chuàng)建 before 觸發(fā)器
create trigger mytg3
before insert on orders
for each row 
begin 
	-- 定義一個(gè)變量,來接收庫(kù)存
	declare n int default 0;
	-- 查詢庫(kù)存 把num賦值給n
	select num into n from product where pid = new.pid;
	-- 判斷下單的數(shù)量是否大于庫(kù)存量
	if new.num>n then
		-- 大于修改下單庫(kù)存(庫(kù)存改為最大量)
	set new.num = n;
	end if;
	update product set num = num-new.num where pid=new.pid;
end;
-- 往訂單表插入記錄
insert into orders values(null,3,50);
-- 查詢商品表商品庫(kù)存更新情況
select * from product;
-- 查詢訂單表
select * from orders;

游標(biāo)

游標(biāo)簡(jiǎn)介

游標(biāo)的作用就是用于對(duì)查詢數(shù)據(jù)庫(kù)所返回的記錄進(jìn)行遍歷,以便進(jìn)行相應(yīng)的操作。游標(biāo)有下面這些特征

  • 游標(biāo)是只讀的,也就是不能更新它;
  • 游標(biāo)是不能滾動(dòng)的,也就是只能在一個(gè)方向上進(jìn)行遍歷,不能在記錄之間隨意進(jìn)退,不能跳過某些記錄;
  • 避免在已經(jīng)打開游標(biāo)的表上更新數(shù)據(jù)。

創(chuàng)建游標(biāo)

創(chuàng)建游標(biāo)的語(yǔ)法包含四個(gè)部分:

  • 定義游標(biāo):declare 游標(biāo)名 cursor for select 語(yǔ)句;
  • 打開游標(biāo):open 游標(biāo)名;
  • 獲取結(jié)果:fetch游標(biāo)名 into 變量名[,變量名];
  • 關(guān)閉游標(biāo):close 游標(biāo)名;

創(chuàng)建一個(gè)過程 p1,使用游標(biāo)返回 test 數(shù)據(jù)庫(kù)中 student 表的第一個(gè)學(xué)生信息。代碼如下所示:

-- 定義過程
create procedure p1()
begin 
	declare id int;
	declare name varchar(20);
	declare age int;
	-- 定義游標(biāo) declare 游標(biāo)名 cursor for select 語(yǔ)句;
	declare mc cursor for select * from student;
	-- 打開游標(biāo) open 游標(biāo)名;
	open mc;
	-- 獲取數(shù)據(jù) fetch 游標(biāo)名 into 變量名[,變量名];
	fetch mc into id,name,age;
	-- 打印
	select id,name,age;
	-- 關(guān)閉游標(biāo)
	close mc;
end;
-- 調(diào)用過程
call p1();

在 test 數(shù)據(jù)庫(kù)創(chuàng)建一個(gè) student2 表,創(chuàng)建一個(gè)過程 p2,使用游標(biāo)提取 student 表中所有學(xué)生信息插入到 student2 表中。代碼如下所示:

-- 定義過程
create procedure p3()
begin 
	declare id int;
	declare name varchar(20);
	declare age int;
	declare flag int default 0;
	-- 定義游標(biāo) declare 游標(biāo)名 cursor for select 語(yǔ)句;
	declare mc cursor for select * from student;
	declare continue handler for not found set flag=1;
	-- 打開游標(biāo) open 游標(biāo)名;
	open mc;
	-- 獲取數(shù)據(jù) fetch 游標(biāo)名 into 變量名[,變量名];
	a:loop -- 循環(huán)獲取數(shù)據(jù)
	fetch mc into id,name,age;
	if flag=1 then -- 當(dāng)無法fetch時(shí)觸發(fā)continue handler
	leave a;-- 終止循環(huán)
	end if;
	-- 進(jìn)行遍歷,將提取的每一行數(shù)據(jù)插入到 student2 表中
	insert into student2 values(id,name,age);
	end loop;
	-- 關(guān)閉游標(biāo)
	close mc;
end;
-- 調(diào)用過程
call p3();
-- 查詢 student2 表
select * from student2;

總結(jié)

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

您可能感興趣的文章:
  • MySQL系列之五 視圖、存儲(chǔ)函數(shù)、存儲(chǔ)過程、觸發(fā)器
  • MySQL觸發(fā)器的使用
  • mysql觸發(fā)器trigger實(shí)例詳解
  • MySQL 觸發(fā)器的使用和理解
  • 一篇文章帶你深入了解Mysql觸發(fā)器

標(biāo)簽:吉林 資陽(yáng) 隨州 荊州 滄州 錦州 甘南 黑河

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《MySQL中觸發(fā)器和游標(biāo)的介紹與使用》,本文關(guān)鍵詞  MySQL,中,觸發(fā)器,和,游,標(biāo)的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《MySQL中觸發(fā)器和游標(biāo)的介紹與使用》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于MySQL中觸發(fā)器和游標(biāo)的介紹與使用的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    国产人成亚洲第一网站在线播放| 国产成人综合在线| 日韩一区欧美二区| av亚洲精华国产精华精华| jjzz黄色片| 91资源在线播放| 欧美性视频一区二区三区| 美国一级黄色录像| 欧美成人一区二区三区 | 国产清纯美女被跳蛋高潮一区二区久久w| 日韩欧美国产一区二区在线播放 | 日本免费新一区视频| 国产成人av一区二区| 师生出轨h灌满了1v1| 日本高清不卡aⅴ免费网站| 欧美三级中文字| 国产婷婷色一区二区三区在线| 国产精品久久久久久久岛一牛影视| 裸体在线国模精品偷拍| 国产69精品一区二区亚洲孕妇| 国产三级视频网站| 欧美一级片在线看| 亚洲视频你懂的| 国产精品一级片| 好吊一区二区三区视频| 无码国产精品一区二区免费式直播| 丰满的亚洲女人毛茸茸| wwwwxxxx国产| 欧美xfplay| 亚洲第一av色| 最新在线黄色网址| 欧美老年两性高潮| 成人免费小视频| 日本不卡视频在线| 国产伦精品一区二区免费| 欧美影院一区二区| 欧美国产一区在线| 国内精品国产成人国产三级粉色| 男人天堂资源网| 欧美精品一区二区久久久| 一区二区三区资源| 国产99久久久精品| 日本猛少妇色xxxxx免费网站| 欧美三级蜜桃2在线观看| 欧美群妇大交群中文字幕| 欧美麻豆精品久久久久久| 欧美大尺度电影在线| 美女在线一区二区| 欧美肉大捧一进一出免费视频| 国产午夜福利一区| 久久久青草青青国产亚洲免观| 美女网站色91| aaaaa一级片| 国产97免费视频| 久久精品视频在线看| 精品一区二区日韩| 中字幕一区二区三区乱码| 精品久久久久久久久久久久包黑料| 香蕉影视欧美成人| 亚洲人成人无码网www国产| 精品处破学生在线二十三| 韩国理伦片一区二区三区在线播放| 黄色国产在线视频| 国产午夜亚洲精品理论片色戒 | 中文字幕一区二区在线播放| 日韩av在线播放中文字幕| 18禁一区二区三区| www.av欧美| 欧美一二三区在线观看| 天天综合天天综合色| 男人操女人下面视频| 极品久久久久久| 日韩午夜激情视频| 日产国产欧美视频一区精品| 97久久人人超碰| 精品视频资源站| 午夜久久久久久久久久一区二区| 日本少妇一区二区三区| 色域天天综合网| 亚洲日本一区二区| 日韩和欧美的一区| 日本 欧美 国产| 色综合久久久久综合体桃花网| 182在线观看视频| 日本一区二区三区四区| 国产精品911| 国产ts在线播放| 欧美日韩成人综合在线一区二区| 国产精品18久久久久久久久 | 国产成a人无v码亚洲福利| 99riav久久精品riav| av网页在线观看| 欧美精品一区二区三区蜜臀 | 国产午夜精品一区二区三区视频| 久久99国产精品免费| 成人激情五月天| 在线免费视频一区二区| 日韩精品中文字幕一区| 亚洲欧美综合网| 亚洲男人电影天堂| 99久久99精品久久久久久| 久久中文免费视频| 亚洲欧洲成人自拍| 国产91丝袜在线观看| 野外性满足hd| 欧美激情自拍偷拍| 亚洲123区在线观看| 激情综合色综合久久综合| 色哟哟无码精品一区二区三区| 91婷婷韩国欧美一区二区| 亚洲欧美日本一区| 91在线观看高清| 91激情五月电影| 久久久久久久久久久电影| 中文字幕一区二区在线播放| 无码av免费精品一区二区三区| 欧美特级一级片| 久久久久久久综合| 亚洲美女高潮久久久| 99国产精品无码| 欧美日韩中文另类| 日韩福利视频导航| 精品一区二区三区不卡| 一本色道久久综合亚洲精品按摩| 啪啪一区二区三区| 中文字幕的久久| 99精品久久只有精品| 91精彩视频在线观看| 亚洲va中文字幕| 成人av电影免费在线播放| 日韩一区二区在线观看视频播放| 亚洲超丰满肉感bbw| 日本丰满少妇一区二区三区| 中文字幕免费一区| 成人18视频在线播放| 真实国产乱子伦对白在线| 亚洲成人第一页| 无码人妻精品一区二区三区99不卡| 欧美日韩国产另类一区| 成人午夜免费电影| 91精品国产色综合久久久蜜香臀| 久久国产精品第一页| 欧美性猛交xxxxx少妇| 另类欧美日韩国产在线| 国产av无码专区亚洲av毛网站| 午夜视频一区二区| 亚洲第一成人网站| 亚洲va国产天堂va久久en| 美国一级黄色录像| 亚洲欧美日韩在线播放| 人人妻人人澡人人爽人人精品| 国产大学生视频| 中文乱码免费一区二区| 偷拍一区二区三区| 色视频欧美一区二区三区| 久久99久久久久久久久久久| 欧美精品电影在线播放| 99精品欧美一区二区蜜桃免费| 欧美激情在线观看视频免费| 久久精品一级爱片| 久久久久久久久免费看无码| 91国偷自产一区二区三区成为亚洲经典 | 国产喷白浆一区二区三区| 日韩情涩欧美日韩视频| 国产91精品一区二区麻豆亚洲| 免费看91的网站| 欧美猛男超大videosgay| 永久av免费网站| 国产精品另类一区| 老司机一区二区| av电影在线观看不卡| 在线一区二区视频| 蜜臀a∨国产成人精品| 日韩精品视频一区二区| 欧美精品一区二区三区四区| 国产精品美日韩| 99精品视频一区二区| 色999日韩国产欧美一区二区| 国产精品国产自产拍高清av| 一级性生活毛片| 一区二区三区四区国产精品| 国产尤物在线播放| 亚洲欧美日韩人成在线播放| 女教师淫辱の教室蜜臀av软件| 久久精品欧美一区二区三区麻豆| 成人免费高清视频| 3d动漫精品啪啪一区二区竹菊| 性欧美18—19sex性高清| 精品噜噜噜噜久久久久久久久试看| 免费视频最近日韩| 黄色精品视频在线观看| 青青青伊人色综合久久| www.色天使| 久久精品国产99国产精品| 精品国产免费一区二区三区香蕉| 成人av在线一区二区三区| 中文字幕人成不卡一区| 91大神福利视频| 国产精品国产三级国产aⅴ原创 | 欧美午夜电影网|