首页 > 代码库 > MySQL触发器

MySQL触发器

所谓的MySQL触发器实际上与一些编程语言中的事件/事件处理程序类似


触发器的建立

  • 建立一张示例表。CREATE TABLE account(acct_num INT,account DECIMAL(10,2));
  • 建立触发器示例:CREATE TIGGER ins_sum BEFORE INSERT ON account FOR EACH ROW SET @sum=@sum+NEW.account;
    以上的触发器示例,创建了一个名为ins_sum的触发器,BEFORE指明了触发的动作时间,与之对应的是AFTERINSERT指明了激活触发器的动作,此位置还可以用UPDATE/DELETE;跟在FOR EACH ROW后面的语句定义了激活触发器后将要执行的程序。在上面的例子中,触发而执行的语句是SET语句,负责将插入的account的值加起来,其中NEW.account意思是将要插入到新行的account的值。
    使用上例之前,应首先将@account初始化,然后再执行INSERT语句
  • 注意:不能为同一个表同一个触发时间定义两个触发器,这也是没有意义的
  • 注意:触发器不能调用动态SQL,也不能使用关于开始或结束事务的语句
  • 可以使用OLDNEW来更新或引用动作执行之前和之后的对象

触发器的删除

  • DROP TRIGGER [scheme_name.]trigger_name

触发器的使用

  • 当执行触发器所定义的动作时,触发器定义的程序将自动执行

批量执行SQL语句

    • 将想要执行的SQL语句写入一个文本文件,例如test_file。然后执行mysql db_name < test_file --user=root
    • 如果文本文件中已经写明USE [db_name],应执行mysql < test_file --user=root 以上两个例子,MySQL用户名为root,文本文件为test_file
    • 如果正在执行MySQL,可以使用source或者\.。e.g.:source test_file.sql或者\. test_file.sql

MySQL触发器