首页 > 数据库 >mysql触发器

mysql触发器

时间:2022-09-25 21:02:07浏览次数:51  
标签:触发器 name 验证 mysql trigger SQL NULL

SQL触发器简介

SQL触发器是存储在数据库目录中的一组SQL语句。只要与表关联的事件发生,例如插入,更新或删除,就会执行或触发SQL触发器

SQL触发器的优点

  • SQL触发器提供了另一种检查数据完整性的方法。
  • SQL触发器可以捕获数据库层中业务逻辑中的错误。
  • SQL触发器提供了另一种运行计划任务的方法。通过使用SQL触发器,您不必等待运行计划任务,因为在对表中的数据进行更改之前或之后会自动调用触发器。
  • SQL触发器对于审计表中数据的更改非常有用。

SQL触发器的缺点

  • SQL触发器只能提供扩展验证,并且不能替换所有验证。必须在应用程序层中完成一些简单的验证。例如,您可以使用JavaScript在客户端验证用户的输入,或者使用服务器端脚本语言(如JSP,PHP,ASP.NET,Perl)在服务器端验证用户的输入。
  • 从客户端应用程序调用和执行SQL触发器是不可见的,因此很难弄清楚数据库层中发生了什么。
  • SQL触发器可能会增加数据库服务器的开销

MySQL 触发器的创建

MySQL触发语法

CREATE TRIGGER trigger_name trigger_time trigger_event
 ON table_name
 FOR EACH ROW
 BEGIN
 ...
 END; 
  • 触发器名称约定 [trigger time][table name][trigger event],例如before_employees_update

  • 触发激活时间可以是BEFORE或AFTER

  • 触发事件可以是INSERT,UPDATE或者DELETE事件导致触发器被调用

  • 触发器必须与特定表关联。如果没有表触发器将不存在,因此您必须在ON关键字后指定表名

  • 将SQL语句放在BEGIN和END阻止之间

  • 例子1

-- create table
CREATE TABLE employees_audit (
    id INT AUTO_INCREMENT PRIMARY KEY,
    employeeNumber INT NOT NULL,
    lastname VARCHAR(50) NOT NULL,
    changedat DATETIME DEFAULT NULL,
    action VARCHAR(50) DEFAULT NULL
); 


标签:触发器,name,验证,mysql,trigger,SQL,NULL
From: https://www.cnblogs.com/noatnu/p/16728888.html

相关文章

  • MySQL数据表的创建、修改、删除及基本操作
    1.在mysql中,可以使用 CREATETABLE 语句创建表。其语法格式为:转自:https://www.cnblogs.com/bigbigbigo/p/10917429.html/*建表的语法*/createtable[ifnotexist]......
  • mysql用户与权限
    mysql.version=5.7(必须注意版本)创建用户(CREATEUSER'bob'@'%'IDENTIFIEDBY'07fa533360d9';)创建bob用户密码:07fa533360d9(CREATEUSER"test"@"localh......
  • 老杜MySQL/days.05(索引、视图、三范式)
    1.索引a.索引是在数据库表的字段上添加的,为了提高查询效率而存在的一种机制;b.相当于目录,可以缩小扫描范围而存在的一种机制;c.一张表的一个字段可以添......
  • MySQL 主从同步延迟监控
    MySQL5.7和8.0支持通过replication_applier_status表获同步延迟时间,当从库出现延迟后,该表中的字段REMAINING_DELAY记录延迟秒数,当没有延迟时,该字段值为NULL,官方对该字......
  • MySQL数据库的创建、修改、删除及基本操作
    1.MySQL数据库的创建,语法格式如下:CREATEDATABASE[IFNOTEXISTS]<数据库名>[[DEFAULT]CHARACTERSET<字符集名>][[DEFAULT]COLLATE<校对规则名>];[]中的内......
  • MySQL数据库-数据表
      数据表的基本操作.MySQL数据库支持多种数据类型,大致可以分为3类:数值类型、日期和时间类型、字符串(字符)类型。(1)数值类型数值类型用于存储数字型数据,这些类型包......
  • MySQL半同步复制的实现和复制过滤器
    异步:当客户端发送给服务端请求时,在等待服务端响应的时候,客户端可以做其他的事情,这样节约了时间,提高了效率。同步:当客户端发送请求给服务端,在等待服务端响应的请求时,客户......
  • 老杜MySQL/days.05(事务)
    1.事务(一个完整的业务逻辑,最小的工作单元)a.事务中的语句要么全部成功,要么全部失败;b.只有DML语句才有事务的说法,即insert、delete、update;c.事务怎么做......
  • mysql分组后选出最大值所在的那一行数据
    背景mysql中使用groupby进行分组后取某一列的最大值,我们可以直接使用MAX()函数来实现,但是如果我们要取最大值所在的那一行或多行(可能有多行对应的最大值都一样)那么我们需......
  • MySQL数据库安装保姆级教程及1045错误和2058问题解决
    使用Mysql的zip压缩包解压版,下载之后需进行一定的配置,才能使用它。下面对Mysql压缩包版的安装方法进行详细的描述,如有疑问或错误,望及时反馈。首先,mysql的官方下载地址......