MySQL触发器

Posted 冬色

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL触发器相关的知识,希望对你有一定的参考价值。

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


触发器的建立

  • 建立一张示例表。CREATE TABLE account(acct_num INT,account DECIMAL(10,2));
  • 建立触发器示例:CREATE TIGGER ins_sum BEFORE INSERT ON account FOR EACH ROW SET @[email protected]+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触发器的主要内容,如果未能解决你的问题,请参考以下文章

如何设置 vscode 的代码片段,以便在自动完成后自动触发 vscode 的智能感知?

片段创建的 Intent 不会触发 onNewIntent

导航到另一个片段时触发 API 调用

我如何使用 codeanywhere 片段

前端防扒代码片段

前端防扒代码片段