自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

MySQL觸發(fā)器如何正確使用

數(shù)據(jù)庫(kù) MySQL
我們今天主要向大家介紹的是MySQL觸發(fā)器進(jìn)行正確使用,其中包括對(duì)MySQL觸發(fā)器發(fā)器的語(yǔ)句創(chuàng)建,觸發(fā)時(shí)間與觸發(fā)事件等相關(guān)內(nèi)容介紹。

以下的文章主要描述的是如何對(duì)MySQL觸發(fā)器進(jìn)行正確使用, MySQL數(shù)據(jù)庫(kù)是在5.0 以后的相關(guān)版本中對(duì)MySQL觸發(fā)器進(jìn)行引用,有時(shí)也可以用相關(guān)的觸發(fā)器對(duì)數(shù)據(jù)的完整性進(jìn)行維護(hù)。如我有一個(gè)表ge_element。

該表中有一個(gè)region_id,對(duì)應(yīng)到ge_region表中的id,但是,region_id是可以為空的,所以不應(yīng)該設(shè)置外鍵約束,而我在刪除ge_region表中的記錄時(shí),希望把在ge_element表中被引用到的記錄的region_id設(shè)為0,因?yàn)闆](méi)有數(shù)據(jù)庫(kù)的外鍵約束,我只能在程序中操作,但我又不想通過(guò)程序來(lái)操作,因?yàn)橐胷egion_id的表可能不只ge_element一個(gè),這時(shí),就可能用到MySQL觸發(fā)器,在刪除ge_region表中的記錄時(shí),把被引用的表中的region_id設(shè)為0。

1.創(chuàng)建觸發(fā)器的語(yǔ)句:

CREATE TRIGGER <觸發(fā)器名稱> <--

{ BEFORE | AFTER }

 

{ INSERT | UPDATE | DELETE }

 

ON <表名稱>

 

FOR EACH ROW

 

<觸發(fā)器SQL語(yǔ)句>

 

觸發(fā)器必須有名字,最多64個(gè)字符,可能后面會(huì)附有分隔符.它和MySQL中其他對(duì)象的命名方式基本相象.

這里我有個(gè)習(xí)慣:就是用表的名字+'_'+觸發(fā)器類型的縮寫(xiě).因此如果是表t26,觸發(fā)器是在事件UPDATE(參考下面的點(diǎn)(2)和(3))之前(BEFORE)的,那么它的名字就是t26_bu。

可以直接在EMS中創(chuàng)建觸發(fā)器。

2.觸發(fā)時(shí)間:

Before表示在事件發(fā)生之前執(zhí)行MySQL觸發(fā)器,After表示在事件發(fā)生之后執(zhí)行觸發(fā)器;

3.觸發(fā)事件:

三個(gè)事件:insert, update, delete

4.觸發(fā)器與表的關(guān)系:

觸發(fā)器是屬于一個(gè)表的,當(dāng)在這個(gè)表上執(zhí)行insert, update, delete操作時(shí),就會(huì)導(dǎo)致相應(yīng)的觸發(fā)器被激活;

不能給同一個(gè)表的同一個(gè)操作創(chuàng)建兩個(gè)不同的觸發(fā)器。

5.觸發(fā)間隔:

FOR EACH ROW 子句通知MySQL觸發(fā)器每隔一行執(zhí)行一次動(dòng)作,而不是對(duì)整下表執(zhí)行一次。

6.觸發(fā)的SQL語(yǔ)句:

觸發(fā)器包含所要觸發(fā)的SQL語(yǔ)句:這里的語(yǔ)句可以是任何合法的語(yǔ)句,包括復(fù)合語(yǔ)句,但是這里的語(yǔ)句受的限制和函數(shù)的一樣。

復(fù)合語(yǔ)句(BEGIN / END)是合法的.

流控制(Flow-of-control)語(yǔ)句(IF, CASE, WHILE, LOOP, WHILE, REPEAT, LEAVE,ITERATE)也是合法的.

變量聲明(DECLARE)以及指派(SET)是合法的.

允許條件聲明.

異常處理聲明也是允許的.

但是在這里要記住函數(shù)有受限條件:不能在函數(shù)中訪問(wèn)表.因此在函數(shù)中使用以下語(yǔ)句是非法的。

7.創(chuàng)建觸發(fā)器的權(quán)限:

你必須要有相當(dāng)大的權(quán)限才能夠創(chuàng)建MySQL觸發(fā)器;我在創(chuàng)建觸發(fā)器的時(shí)候提示要有super privilege才可以創(chuàng)建;

 

 【編輯推薦】

  1. MySQL LIMIT如何正確對(duì)其進(jìn)行優(yōu)化
  2. MySQL兩項(xiàng)性能的基本測(cè)試淺談
  3. MySQL臨時(shí)表的具體使用方案
  4. 用Excel如何對(duì)MySQL數(shù)據(jù)進(jìn)行分析
  5. MySQL數(shù)據(jù)類型與相應(yīng)的建庫(kù)策略

 

責(zé)任編輯:佚名 來(lái)源: 博客園
相關(guān)推薦

2010-05-19 09:40:05

MySQL觸發(fā)器

2010-10-12 10:10:55

mysql觸發(fā)器

2010-05-04 09:44:12

Oracle Trig

2010-10-12 10:04:15

MySQL觸發(fā)器

2010-10-12 10:24:58

mysql觸發(fā)器

2010-05-31 18:06:07

MySQL 觸發(fā)器

2021-07-30 10:33:57

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

2011-05-20 14:06:25

Oracle觸發(fā)器

2010-09-01 16:40:00

SQL刪除觸發(fā)器

2009-04-07 13:56:03

SQL Server觸發(fā)器實(shí)例

2024-03-25 12:38:00

MySQL內(nèi)存參數(shù)

2010-10-11 14:52:43

Mysql觸發(fā)器

2010-05-18 15:36:44

MySQL觸發(fā)器

2010-05-26 17:57:44

MySQL 觸發(fā)器

2010-04-09 09:07:43

Oracle游標(biāo)觸發(fā)器

2010-10-12 10:38:29

mysql觸發(fā)器

2010-10-12 09:41:26

mysql觸發(fā)器

2009-09-18 14:31:33

CLR觸發(fā)器

2011-03-28 10:05:57

sql觸發(fā)器代碼

2009-12-24 17:38:18

WPF事件觸發(fā)器
點(diǎn)贊
收藏

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