使用Mysql新建觸發(fā)器的方法:
創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括玉樹網(wǎng)站建設(shè)、玉樹網(wǎng)站制作、玉樹網(wǎng)頁(yè)制作以及玉樹網(wǎng)絡(luò)營(yíng)銷策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,玉樹網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到玉樹省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
1、首先,需要確定自己的Mysql數(shù)據(jù)庫(kù)的版本,因?yàn)閙y sql數(shù)據(jù)庫(kù)是從5.0.2版本才開始支持觸發(fā)器的。
2、在電腦的dos命令界面中輸入 mysql --version,來(lái)獲取mysql的版本號(hào),注意version的兩個(gè)橫線和之前的mysql是有一個(gè)空格的。
3、上一步獲取了mysql版本號(hào),就開始建立觸發(fā)器。采用以視圖加代碼的方式創(chuàng)建,在數(shù)據(jù)表中找到要執(zhí)行刪除操作的表,然后右鍵設(shè)計(jì)表
4、這樣就打開了表的設(shè)計(jì)頁(yè)面,可以看到有一個(gè)觸發(fā)器選項(xiàng)卡,點(diǎn)擊“觸發(fā)器”
5、可以看到對(duì)應(yīng)的選項(xiàng),在名里面添加需要新建的觸發(fā)器的名字,在觸發(fā)選項(xiàng)中選擇before或者after,然后在插入、更新、刪除三個(gè)選項(xiàng)中勾選一個(gè)。
6、這樣們就建立了一個(gè)名為“datri”的觸發(fā)器,在刪除操作執(zhí)行之后觸發(fā)
7、然后在下面的定義下面的框中輸入需要執(zhí)行的操作。然后點(diǎn)擊sql預(yù)覽,可以看到整個(gè)觸發(fā)器的代碼
8、最后就是保存了,由于做的是觸發(fā)器,保存之后,在執(zhí)行刪除操作時(shí),這個(gè)觸發(fā)器才相當(dāng)于被執(zhí)行。
mysql中,觸發(fā)器只能查看,無(wú)法修改,如果要修改,只能刪除原有的觸發(fā)器,重新創(chuàng)建觸發(fā)器,以達(dá)到修改的目的。
工具:Navicat Premiu
步驟:
1、正確安裝Navicat Premiu,并確保連接到指定的數(shù)據(jù)庫(kù)。
2、以連接本地?cái)?shù)據(jù)庫(kù)localhost中的badkano數(shù)據(jù)庫(kù)為例。
3、點(diǎn)擊軟件上方的查詢-新建查詢。
4、先執(zhí)行SHOW TRIGGERS,查看數(shù)據(jù)庫(kù)中的觸發(fā)器。
5、如果要修改觸發(fā)器,需要?jiǎng)h除掉這個(gè)觸發(fā)器。執(zhí)行語(yǔ)句為:
DROP?TRIGGER?t_afterdelete_on_tab1;
6、然后重新創(chuàng)建即可。
將delimiter ; 更改為delimiter //\x0d\x0a如下:\x0d\x0amysql delimiter //\x0d\x0amysql create trigger insertArticle_Trigger after insert on article1\x0d\x0a - for each row\x0d\x0a - begin\x0d\x0a - update board1 set articleCount = articleCount+1 where id=new.bid;\x0d\x0a - end;\x0d\x0a - //\x0d\x0a\x0d\x0a執(zhí)行如下語(yǔ)句,可查看到board1表articleCount被更改:\x0d\x0amysql delimiter ;\x0d\x0amysql insert into article1 values(1);\x0d\x0a\x0d\x0a其中delimiter作用:\x0d\x0a告訴mysql解釋器,該段命令是否已經(jīng)結(jié)束了,mysql是否可以執(zhí)行了。 \x0d\x0a默認(rèn)情況下,delimiter是分號(hào);。在命令行客戶端中,如果有一行命令以分號(hào)結(jié)束, 那么回車后,mysql將會(huì)執(zhí)行該命令。但有時(shí)候,不希望MySQL這么做。在為可能輸入較多的語(yǔ)句,且語(yǔ)句中包含有分號(hào)。使用delimiter //,這樣只有當(dāng)//出現(xiàn)之后,mysql解釋器才會(huì)執(zhí)行這段語(yǔ)句。詳見
觸發(fā)器已經(jīng)沒(méi)有單獨(dú)操作修改的,如果想修改,一般是刪除原來(lái)的觸發(fā)器后創(chuàng)建同名的觸發(fā)器。mysql使用的時(shí)候,一般建議不使用觸發(fā)器,即使使用觸發(fā)器,要確保觸發(fā)器的執(zhí)行效率非常高才行。
存儲(chǔ)過(guò)程:
mysql
CREATE
PROCEDURE
up_sbwcsl(IN
xbh
int)
BEGIN
begin
select
科研計(jì)劃.系部號(hào),是否申報(bào),完成數(shù)量
from
科研計(jì)劃
Where
科研計(jì)劃.系部號(hào)=@xbh
and
是否申報(bào)='是'
END;
觸發(fā)器語(yǔ)法一樣的。
Create
trigger
up_ysbz
On
科研計(jì)劃
For
update
As
Begin
If
update(驗(yàn)收標(biāo)志)
Update
科研計(jì)劃
set
驗(yàn)收標(biāo)志='驗(yàn)收通過(guò)'
end
語(yǔ)法說(shuō)明如下。
1) 觸發(fā)器名
觸發(fā)器的名稱,觸發(fā)器在當(dāng)前數(shù)據(jù)庫(kù)中必須具有唯一的名稱。如果要在某個(gè)特定數(shù)據(jù)庫(kù)中創(chuàng)建,名稱前面應(yīng)該加上數(shù)據(jù)庫(kù)的名稱。
2) INSERT | UPDATE | DELETE
觸發(fā)事件,用于指定激活觸發(fā)器的語(yǔ)句的種類。
注意:三種觸發(fā)器的執(zhí)行時(shí)間如下。INSERT:將新行插入表時(shí)激活觸發(fā)器。例如,INSERT 的 BEFORE 觸發(fā)器不僅能被 MySQL 的 INSERT 語(yǔ)句激活,也能被 LOAD DATA 語(yǔ)句激活。DELETE: 從表中刪除某一行數(shù)據(jù)時(shí)激活觸發(fā)器,例如 DELETE 和 REPLACE 語(yǔ)句。UPDATE:更改表中某一行數(shù)據(jù)時(shí)激活觸發(fā)器,例如 UPDATE 語(yǔ)句。
3) BEFORE | AFTER
BEFORE 和 AFTER,觸發(fā)器被觸發(fā)的時(shí)刻,表示觸發(fā)器是在激活它的語(yǔ)句之前或之后觸發(fā)。若希望驗(yàn)證新數(shù)據(jù)是否滿足條件,則使用 BEFORE 選項(xiàng);若希望在激活觸發(fā)器的語(yǔ)句執(zhí)行之后完成幾個(gè)或更多的改變,則通常使用 AFTER 選項(xiàng)。
4) 表名
與觸發(fā)器相關(guān)聯(lián)的表名,此表必須是永久性表,不能將觸發(fā)器與臨時(shí)表或視圖關(guān)聯(lián)起來(lái)。在該表上觸發(fā)事件發(fā)生時(shí)才會(huì)激活觸發(fā)器。同一個(gè)表不能擁有兩個(gè)具有相同觸發(fā)時(shí)刻和事件的觸發(fā)器。例如,對(duì)于一張數(shù)據(jù)表,不能同時(shí)有兩個(gè) BEFORE UPDATE 觸發(fā)器,但可以有一個(gè) BEFORE UPDATE 觸發(fā)器和一個(gè) BEFORE INSERT 觸發(fā)器,或一個(gè) BEFORE UPDATE 觸發(fā)器和一個(gè) AFTER UPDATE 觸發(fā)器。
5) 觸發(fā)器主體
觸發(fā)器動(dòng)作主體,包含觸發(fā)器激活時(shí)將要執(zhí)行的 MySQL 語(yǔ)句。如果要執(zhí)行多個(gè)語(yǔ)句,可使用 BEGIN…END 復(fù)合語(yǔ)句結(jié)構(gòu)。