最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL 5.0觸發(fā)器參考教程

 更新時(shí)間:2008年09月10日 09:20:36   作者:  
需要學(xué)習(xí)mysql觸發(fā)器的朋友需要了解的東西,整理的比較多,建議大家慢慢多練習(xí)

  例如:

CREATE TABLE t25(s1 INT, s2 CHAR(5), PRIMARY KEY (s1),
CHECK (LEFT(s2,1)='A'))
ENGINE=INNODB;
  這里CHECK的意思是"當(dāng)s2列的最左邊的字符不是'A'時(shí),insert和update語(yǔ)句都會(huì)非法",MySQL的視圖不支持CHECK,我個(gè)人是很希望它能支持的。但如果你很需要在表中使用這樣的功能,我建議大家使用觸發(fā)器來(lái)實(shí)現(xiàn)。

CREATE TABLE t25
(s1 INT, s2 CHAR(5),
PRIMARY KEY (s1))
ENGINE=INNODB//
CREATE TRIGGER t25_bi
BEFORE INSERT ON t25
FOR EACH ROW
IF LEFT(NEW.s2,1)<>'A' THEN SET NEW.s1=0; END IF;//
CREATE TRIGGER t25_bu
BEFORE UPDATE ON t25
FOR EACH ROW
IF LEFT(NEW.s2,1)<>'A' THEN SET NEW.s1=0; END IF;//
  我只需要使用BEFORE INSERT和BEFORE UPDATE語(yǔ)句就行了,刪除了觸發(fā)器不會(huì)對(duì)表有影響,同時(shí)AFTER的觸發(fā)器也不能修改NEW的過(guò)程變量(transition variables)。為了激活觸發(fā)器,我執(zhí)行了向表中的行插入s1=0的數(shù)據(jù),之后只要執(zhí)行符合LEFT(s2,1) <> 'A'條件的動(dòng)作都會(huì)失?。?

  INSERT INTO t25 VALUES (0,'a') /* priming the pump */ //

  INSERT INTO t25 VALUES (5,'b') /* gets error '23000' */ //


  Don't Believe The Old MySQL Manual

  該拋棄舊的MySQL的手冊(cè)了

  我在這里警告大家不要相信過(guò)去的MySQL手冊(cè)中所說(shuō)的了。我們已經(jīng)去掉了關(guān)于觸發(fā)器的錯(cuò)誤的語(yǔ)句,但是仍舊有很多舊版本的手冊(cè)在網(wǎng)上,舉個(gè)例子,這是一個(gè)德國(guó)的Url上的:

  http://dev.mysql.com/doc/mysql/de/ANSI_diff_Triggers.html.

  這個(gè)手冊(cè)上說(shuō)觸發(fā)器就是存儲(chǔ)過(guò)程,忘掉吧,你也已經(jīng)看見(jiàn)了,觸發(fā)器就是觸發(fā)器,而存儲(chǔ)過(guò)程還是存儲(chǔ)過(guò)程。

  手冊(cè)上還說(shuō)觸發(fā)器可以從其他表上來(lái)刪除,或者是當(dāng)你刪除一個(gè)事務(wù)的時(shí)候激發(fā),無(wú)論他說(shuō)的是什么意思,忘掉吧,MySQL不會(huì)去實(shí)現(xiàn)這些的。

  最后關(guān)于說(shuō)使用觸發(fā)器會(huì)對(duì)查詢(xún)速度產(chǎn)生影響的說(shuō)法也是錯(cuò)的,觸發(fā)器不會(huì)對(duì)查詢(xún)產(chǎn)生任何影響。

  Bugs

 ?。ú缓玫臇|西就不翻譯了)

  On December 14 2004, I did an "Advanced Search" in http://bugs.mysql.com for 'trigger' or

  'triggers', I found that there were 17 active bugs as of that date. Of course they might disappear

  before you read this, but just in case they haven't, I'll mention the important ones. If they're still

  there, you'll have to work around them when you're trying triggers.

  Bug#5859 DROP TABLE does not drop triggers.

 ?。▌h除表的時(shí)候沒(méi)有自動(dòng)刪除觸發(fā)器)

  When you drop a table, dropping the table's triggers should be automatic.

  Bug#5892 Triggers have the wrong namespace.


  (觸發(fā)器的命名空間有錯(cuò),你必須在前面加上表的名字才能刪除觸發(fā)器,下面是例子)

  You have to say "DROP TRIGGER <table name> . <trigger name>".

  The correct way is "DROP TRIGGER <trigger name>".

  Bug#5894 Triggers with altered tables cause corrupt databases.

 ?。ㄓ|發(fā)器對(duì)表的改變可能會(huì)造成數(shù)據(jù)庫(kù)數(shù)據(jù)被破壞)

  Do not alter a table that has a trigger on it, until you know this is fixed.

相關(guān)文章

最新評(píng)論

石城县| 安泽县| 梁山县| 锦屏县| 姚安县| 洪江市| 克什克腾旗| 印江| 通榆县| 博湖县| 阿巴嘎旗| 东山县| 东阳市| 将乐县| 德安县| 富民县| 台州市| 崇义县| 客服| 陵川县| 辽阳市| 长治市| 岱山县| 通江县| 济源市| 二连浩特市| 津南区| 玉溪市| 金沙县| 明星| 中山市| 建平县| 永吉县| 涟源市| 惠水县| 衡南县| 汉寿县| 清河县| 和田县| 陇南市| 陵水|