;;10.1 MySQL 触发器;10.1.1 创建MySQL 触发器;[例10-1] 下面创建一个由 命令“”触发的触发器。 具体步骤如下: (1) 创建一个名为 的表。 该表的结构非常简单。 相关代码如下:table(id int(11) key not null,(50)not null); (2) 创建一个名为触发器,其代码如下: // on for every into () (now()) ;//; 在上面10.1.1小节中,我们介绍了如何创建一个基本的触发器,但在实际应用中,触发器往往包含多个执行语句。 创建多条执行语句的触发器的语法结构如下: 触发器名称 | 触发器 AFTER 触发器事件 ON 表名 FOR EACH 执行语句列表 END 其中,创建多条执行语句的触发器的语法结构与创建触发器的通用语法相同。 结构大致相同。 参数说明请参见10.1.1节参数说明。
我这里就不详细说了。 在此结构中,在 BEGIN 和 END 之间放置多个要执行的语句。 多条语句中需要执行的内容需要用分隔符“;”分隔。 注意:一般情况下,BEGIN 和 END 之间放置的多个执行语句必须用结束分隔符“;”分隔。 创建触发器的过程中需要改变分隔符,所以这里应用上一章提到的语句,将结束符号改为“//”。 创建触发器后,读者还可以使用该语句将终止符改回“;”。 ;;运行上述代码的结果如图10-3所示。 图10-3 创建多条语句的触发器; [示例10-3]触发器创建成功。 执行删除操作后,表中将插入两条相关记录。 执行删除操作的代码如下: FROM where sid=7; 删除成功后,使用语句分别查看数据表和数据表。 运行结果如图10-4和图10-5所示。 图10-4 查看数据表信息 图10-5 查看数据表信息 从上图可以看出,触发器创建成功后,当用户对表进行操作时,数据库中的数据表和分别插入数据表。 运行时间和运行信息。
注意:在MySQL中,一张表只能同时创建一个触发器,并且触发时间相同,例如触发时间,并且只能有一个触发时间为AFTER的触发器。 但可以定义触发器。 ;10.2 查看触发器; 在MySQL中,可以执行SHOW语句来查看触发器的基本信息。 其基本形式如下: SHOW ; 进入MySQL数据库,选择数据库,查看数据库中存在的触发器。 运行结果如图10 -6 所示。 图 10-6 查看触发器。 在命令提示符中输入SHOW语句可以查看所选数据库中的所有触发器。 但应用这种视图语句有一定的缺点,即只能查询所有触发器的内容,而不能指定视图。 有关触发器的信息。 这会给用户在查找指定触发信息时带来很大的不便。 因此,建议读者在触发器数量较少的情况下,仅使用SHOW语句来查询触发器的基本信息。 ; 在MySQL中,所有触发器定义都存在于数据库的表中。 读者可以查询该表来查看数据库中所有触发器的详细信息。 查询语句如下: * FROM .; 其中是MySQL中默认存在的库,但是是数据库中用于记录触发器信息的数据表。
通过语句查看触发器信息。 运行结果与图10-6相同。 但如果用户想查看指定的内容则触发。 通过where子句可以将字段作为查询条件。 代码如下: * FROM . WHERE = '触发器名称'; 参数“触发器名称”指定用户想要查看的触发器的名称。 与其他查询语句一样,名称内容需要用一对“''”(单引号)分隔指定的文本内容。 注意:如果数据库中有大量触发器,建议读者使用第二种方式查看触发器。 这样会避免在查找指定触发器时带来很多不必要的麻烦。 ; 在MySQL中,触发器的执行顺序是:触发器、表操作、AFTER触发器操作,其中表操作包括、、等常见数据库操作命令。 [例10-4] 触发器和表操作有一个执行顺序。 我们来创建一个例子,向读者展示三者之间的执行顺序关系。 (1) 创建一个名为 的触发器,其代码如下: into (info) (''); (2) 创建名为 的 AFTER 触发器,其代码如下: after for every into (info) ('after ');;步骤(1)和(2)的运行结果如图10-7所示。
图10-7 创建触发器的结果; (3) 创建触发器后,向数据表中插入一条记录。 代码如下: into(name)(''); 执行成功后,通过语句检查数据表的插入状态。 代码如下: * from ;运行上述代码,结果如图10-8所示。 图10-8 查看表中触发器的执行顺序。 显示查询结果并激活后触发器。 首先激活触发器,然后再次激活后触发器。 注意:触发器不能包含 START、or、CALL 等关键字。 触发器的执行非常严格,各个环节都紧密相关。 任何错误都可能导致程序无法向下执行。 已更新的数据表无法回滚。 因此,我们在设计过程中必须注意触发器的逻辑严密性。 ; 在MySQL中,既然可以创建触发器,那么也可以通过命令删除触发器。 删除触发器是指删除数据库中已经创建的触发器,类似于MySQL中删除数据库的命令。 使用 DROP 关键字删除触发器。
语法格式如下: DROP 触发器名称 “触发器名称”参数指定用户要删除的触发器的名称。 如果指定了特定的触发器名称,MySQL在执行时会在当前库中搜索该触发器。 注意:应用触发器后,记得删除触发器,否则执行某些数据库操作时数据会发生变化。 ;[例10-5] 接下来,删除名为的触发器,其执行代码如下: DROP ;执行上述代码,运行结果如图10-9所示。 图10-9 删除触发器 使用view 命令可以查看数据库中的触发器信息。 代码如下:SHOW; 检查触发信息。 从图10-10可以看到,named触发器已被删除。 图10-10 查看数据库中的触发器信息 说明:从图10-10的返回结果可以看出,数据库中有两条触发器信息。 这两个触发器是在 10.1.2 节中创建的。 如果用户数据库中没有创建触发器,则返回的结果将是“空集”。 ; 本示例将创建一个由 触发的触发器,以便在向表中插入数据时自动将当前时间插入到表中。 效果如图10-11所示。
图10-11 创建一个触发器,触发方式为; 当触发器创建成功后,当对表进行操作时,数据库系统会在执行语句之前将当前时间插入到表中。 下面向表中插入一条记录,然后检查表中是否执行了该操作。 关键代码参考如下:trig1 FOR EACH ROW INTO (times) (NOW()); INO(名字)('liliy'); //插入一条记录 * from ;; (1)触发器是MySQL的基本命令事件 为了触发某些特定的操作,这些基本命令是由 、 、 等事件触发的。 (2)查看触发器是指查看数据库中已存在的触发器的定义、状态、语法等信息。 查看触发器应用SHOW语句。 (3)在MySQL中,可以执行SHOW语句来查看触发器的基本信息。
(4)在MySQL中,所有的触发器定义都存在于数据库的表中。 (5)在MySQL中,触发器的执行顺序为:触发器、表操作、AFTER触发器操作,其中表操作包括、、等常见数据库操作命令。 (6)删除触发器应用DROP关键字。 ;1. 如何查看触发信息。 2. 触发器的触发顺序是什么。 3、触发器执行的语句有哪些约束。