欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

  例如:

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

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語句就行了,刪除了觸發(fā)器不會對表有影響,同時AFTER的觸發(fā)器也不能修改NEW的過程變量(transition variables)。為了激活觸發(fā)器,我執(zhí)行了向表中的行插入s1=0的數據,之后只要執(zhí)行符合LEFT(s2,1) <> 'A'條件的動作都會失敗:

  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的手冊了

  我在這里警告大家不要相信過去的MySQL手冊中所說的了。我們已經去掉了關于觸發(fā)器的錯誤的語句,但是仍舊有很多舊版本的手冊在網上,舉個例子,這是一個德國的Url上的:

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

  這個手冊上說觸發(fā)器就是存儲過程,忘掉吧,你也已經看見了,觸發(fā)器就是觸發(fā)器,而存儲過程還是存儲過程。

  手冊上還說觸發(fā)器可以從其他表上來刪除,或者是當你刪除一個事務的時候激發(fā),無論他說的是什么意思,忘掉吧,MySQL不會去實現這些的。

  最后關于說使用觸發(fā)器會對查詢速度產生影響的說法也是錯的,觸發(fā)器不會對查詢產生任何影響。

  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除表的時候沒有自動刪除觸發(fā)器)

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

  Bug#5892 Triggers have the wrong namespace.


 ?。ㄓ|發(fā)器的命名空間有錯,你必須在前面加上表的名字才能刪除觸發(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ā)器對表的改變可能會造成數據庫數據被破壞)

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

相關文章

  • MySQL找出未提交事務信息的方法分享

    MySQL找出未提交事務信息的方法分享

    這篇文章主要給大家介紹了關于MySQL如何找出未提交事務信息的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用MySQL具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-06-06
  • SQL-?join多表關聯(lián)問題

    SQL-?join多表關聯(lián)問題

    這篇文章主要介紹了SQL-?join多表關聯(lián)問題,具有很好的參考價值,希望對大家有所幫助。
    2022-12-12
  • 超詳細MySQL使用規(guī)范分享

    超詳細MySQL使用規(guī)范分享

    這篇文章主要介紹了MySQL使用規(guī)范,幫助大家更規(guī)范的操作MySQL,感興趣的朋友可以了解下
    2020-08-08
  • MySQL禁用InnoDB引擎的方法

    MySQL禁用InnoDB引擎的方法

    這篇文章主要介紹了MySQL禁用InnoDB引擎的方法,針對的Mysql版本是5.5和5.6,使用了兩種不同的配置文件,需要的朋友可以參考下
    2014-05-05
  • MySQL 觸發(fā)器的基礎操作(六)

    MySQL 觸發(fā)器的基礎操作(六)

    這篇文章主要為大家詳細介紹了MySQL 觸發(fā)器的基礎操作,告訴大家什么是MySQL觸發(fā)器,如何查看觸發(fā)器,感興趣的小伙伴們可以參考一下
    2016-08-08
  • MySQL為什么要避免大事務以及大事務解決的方法

    MySQL為什么要避免大事務以及大事務解決的方法

    這篇文章主要介紹了MySQL為什么要避免大事務以及大事務解決的方法,幫助大家更好的理解和學習MySQL,感興趣的朋友可以了解下
    2020-08-08
  • 淺談mysql導出表數據到excel關于datetime的格式問題

    淺談mysql導出表數據到excel關于datetime的格式問題

    這篇文章主要介紹了淺談mysql導出表數據到excel關于datetime的格式問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • 設置MySQLroot賬戶密碼報錯ERROR 1064 (42000): You have an error in your SQL syntax;的解決方案

    設置MySQLroot賬戶密碼報錯ERROR 1064 (42000): You 

    在安裝mysql的時候,設置root賬戶密碼出現了ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds..錯誤,本文小編給大家介紹了相關的解決方案,需要的朋友可以參考下
    2023-12-12
  • SQL結果如何根據某個字段取最新時間去重

    SQL結果如何根據某個字段取最新時間去重

    在日常的項目開發(fā)當中,經常會遇到獲取同一屬性相同的記錄,如何獲取記錄時間最新的那一條,下面這篇文章主要給大家介紹了關于SQL結果如何根據某個字段取最新時間去重的相關資料,需要的朋友可以參考下
    2023-06-06
  • MySQL?SQL性能分析之慢查詢日志、explain使用詳解

    MySQL?SQL性能分析之慢查詢日志、explain使用詳解

    這篇文章主要介紹了MySQL?SQL性能分析?慢查詢日志、explain使用,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04

最新評論