`
suchj
  • 浏览: 147623 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MySQL触发器的创建与删除<转>

    博客分类:
  • sql
阅读更多
原文出处:http://database.51cto.com/art/201005/200548.htm

摘要:以下的文章主要介绍的是MySQL触发器的正确创建步骤,以及MySQL触发器的删除,以下就是具体内容的描述,希望在你今后的学习中会有所帮助。
标签:MySQL触发器

下面的文章主要描述的是MySQL触发器的正确创建步骤,MySQL触发器的删除,你如果对MySQL触发器的正确创建步骤,MySQL触发器的删除有兴趣的话你就可以点击以下的文章进行观看了。

1、创建MySQL触发器:

语法:
CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name
FOR EACH ROW
BEGIN
   trigger_stmt
END;

例子
CREATE TRIGGER SetUserHome after insert ON users
FOR EACH ROW
BEGIN
   update `users` set homeLocationX = 128, homeLocationY=128, homeLocationZ=30 where uuid = NEW.uuid;
END 

以上的例子是错误的, 让本表进行触发时进行更新会让程序进入死循环。
系统会报这样的错误:it is already used by statement which invoked this stored function/trigger.

应该改成以下语句:
CREATE TRIGGER SetUserHome before insert ON users
FOR EACH ROW
BEGIN
   set New.homeLocationX = 128;
   set New.homeLocationY = 128;
   set New.homeLocationZ=30;
END  

大写的为关键字
trigger_name:触发器的名字,我常用的命名规则t_name_tableName_(b|a)(i|u|d),

t:MySQL触发器标识,
name:英文名,
tableName:表名,
b(BEFORE):标识是触发事件之前,
a(AFTER):标识触发事件之后,
i(insert):标识insert事件,
u(update):标识update事件,
d(delete):标识delete事件;
trigger_time:触发时间(BEFORE或AFTER)
trigger_event:事件名(insert或update或delete)
tbl_name:表名(必须是永久性表)
trigger_stmt:执行语句(可以是复合语名),使用别名OLD和NEW,能够引用与触发程序相关的表中的列。

2、删除解发器

语法:
DROP TRIGGER [schema_name.]trigger_name;  

注意:以上操作均需SUPER权限
示例:
DROP TRIGGER t_wiley_hotelComment_bu;
delimiter //   
CREATE TRIGGER t_wiley_hotelComment_bu BEFORE UPDATE ON hotel_comment
FOR EACH ROW
BEGIN
   IF OLD.ispass=0 && NEW.ispass=1 THEN
   UPDATE hotel_info SET sumcommentsumcomment=sumcomment+1,sumconsumesumconsume=sumconsume+NEW.consume,sumservicesumservice=sumservice+NEW.service, sumroomsumroom=sumroom+NEW.room,sumentironsumentiron=sumentiron+NEW.entironment,totaltotal=total+(NEW.service+NEW.room+NEW.entironment) WHERE hotel_id=NEW.hotel_id;
   ELSEIF OLD.ispass=1 && NEW.ispass=0 THEN
   UPDATE hotel_info SET sumcommentsumcomment=sumcomment-1,sumconsumesumconsume=sumconsume-NEW.consume,sumservicesumservice=sumservice-NEW.service, sumroomsumroom=sumroom-NEW.room,sumentironsumentiron=sumentiron-NEW.entironment,totaltotal=total-(NEW.service+NEW.room+NEW.entironment) WHERE hotel_id=NEW.hotel_id;
   END IF;
END;//
delimiter ;  

以上的相关内容就是对MySQL触发器的使用的介绍,望你能有所收获。

分享到:
评论

相关推荐

    MYSQL

    &lt;br&gt;5.6 怎样处理没有提交/回卷(COMMIT / ROLLBACK) &lt;br&gt;6 MySQL 存取权限系统 &lt;br&gt;6.1 权限系统做什么 &lt;br&gt;6.2 MySQL用户名和口令 &lt;br&gt;6.3 与MySQL服务器连接 &lt;br&gt;6.4 使你的口令安全 &lt;br&gt;6.5 MySQL 提供的权限 ...

    MySQL中文参考手册.chm

    &lt;br/&gt;5.4.4 存储过程和触发器 &lt;br/&gt;5.4.5 外键(Foreign Keys)&lt;br/&gt;5.4.5.1 不使用外键的理由 &lt;br/&gt;5.4.6 视图(Views) &lt;br/&gt;5.4.7 '--'作为一个 注解的开始 &lt;br/&gt;5.5 MySQL 遵循什么标准? &lt;br/&gt;5.6 怎样处理没有提交...

    触发器创建与管理实验 .docx

    触发器创建与管理实验报告 在本实验中,我们将学习触发器的概念、类型、功能和工作原理,并掌握创建、更改、删除触发器的方法。此外,我们还将学习如何利用触发器维护数据完整性。 一、触发器概念和类型 触发器是...

    mysql触发器之触发器的增删改查操作示例

    MySQL触发器在实际应用中扮演着重要角色,比如在数据插入、更新或删除前后的验证、审计日志记录、数据同步和计算复杂业务逻辑等场景。触发器的使用应该谨慎,因为它们可能会增加数据库的复杂性,并可能导致性能问题...

    MYSQL触发器相关内容

    ### MySQL触发器详解 #### 一、触发器基础语法与结构 MySQL中的触发器是一种存储在数据库中的特殊类型的存储过程,它会在特定的数据库事件(如数据插入、更新或删除)发生时自动执行。触发器可以确保数据的一致性...

    mysql触发器+存储过程

    文件“MySQL存储过程.pdf”和“OReilly.MySQL.Stored.Procedure.Programming.rar”可能会提供关于如何创建、调用和管理MySQL存储过程的详细指南,而“MySQL触发器.rar”则可能包含触发器的创建、使用和优化方面的...

    MySQL触发器.pdf

    ### MySQL触发器详解 #### 引言 MySQL触发器,作为MySQL 5.0版本引入的一项重要特性,为数据库管理提供了更为精细的控制能力。触发器允许在特定的数据库操作(如INSERT、UPDATE、DELETE)发生时自动执行SQL语句,...

    mysql中触发器使用详解.docx

    MySQL中的触发器是一种数据库对象,它与特定的表相关联,并在对表执行INSERT、UPDATE或DELETE操作之前或之后自动执行预定义的SQL语句。触发器的主要作用是增强数据库的逻辑控制,确保数据完整性、记录操作日志以及...

    mysql触发器文档

    MySQL触发器是一种服务器端的程序,它可以响应特定的数据库事件(如插入、更新或删除记录)而自动执行。触发器自MySQL 5.0版本起被引入,这标志着MySQL在功能性上的一大进步,使其能够更好地满足企业级应用的需求。 ...

    MySQL触发器.rar

    在"MySQL触发器.pdf"这本书籍教程中,你可能会深入学习到触发器的详细用法,包括如何创建、修改和删除触发器,以及如何在实际项目中有效利用它们。"下载说明.txt"可能包含了获取更多资源的指引,而"A5下载- 更全的...

    linux mysql 命令 大全.docx

    1. 创建新用户:`CREATE USER '&lt;username&gt;'@'&lt;host&gt;' IDENTIFIED BY '&lt;password&gt;';` 2. 授予权限:`GRANT ALL PRIVILEGES ON &lt;database_name&gt;.* TO '&lt;username&gt;'@'&lt;host&gt;';` 3. 撤销权限:`REVOKE ALL PRIVILEGES ON...

    mysql触发器教程

    MySQL触发器是一种存储在数据库中的特殊类型的存储过程,当特定的事件(如插入、更新或删除数据)发生时自动执行。它们允许用户定义一系列复杂的规则和逻辑,以便在数据库操作时执行额外的操作。 #### 二、MySQL...

    mysql触发器

    MySQL触发器是数据库管理系统中的一个重要特性,用于在特定的数据操作(如INSERT、UPDATE或DELETE)发生时自动执行预定义的SQL语句。这些语句可以是复杂的业务逻辑,用来确保数据的一致性、完整性和安全性。在本篇...

    mysql存储过程、触发器.pdf

    CREATE TRIGGER &lt;触发器名&gt; BEFORE/AFTER &lt;触发器事件&gt; ON &lt;表名&gt; FOR EACH ROW &lt;触发器体&gt; ``` 例如,创建一个名为 `before_insert_students` 的触发器,用于在插入学生信息之前执行特定的操作: ```sql delimiter ...

    mysql命令行常用命令.pdf

    - `UPDATE &lt;表名&gt; SET &lt;列&gt;=&lt;值&gt; WHERE &lt;条件&gt;;` 更新表中的数据。 - `DROP COLUMN` 或 `ADD COLUMN` 可以用来删除或添加列。 - `CREATE INDEX` 用于创建索引以提高查询速度。 - `DROP INDEX` 删除已创建的索引...

    实验九MySQL的触发器.pdf

    通过这个实验,学生可以深入理解MySQL触发器的工作原理,以及如何在实际环境中应用它们来增强数据库的管理和安全性。实验报告应包含实验步骤、观察结果、问题分析和总结,以巩固理论知识和实践技能。

    mysql 触发器文档

    IF OLD.salary &lt;&gt; NEW.salary THEN INSERT INTO salary_log (employee_id, old_salary, new_salary) VALUES (NEW.id, OLD.salary, NEW.salary); END IF; END; ``` #### 示例:创建与插入操作 创建一个触发器,在...

    mysql触发器.zip

    MySQL触发器是数据库管理系统中的一个重要特性,它允许在特定的数据库操作(如INSERT、UPDATE或DELETE)发生之前或之后执行自定义的SQL代码。这些自动执行的代码块可以用来实现复杂的业务逻辑,确保数据的一致性和...

Global site tag (gtag.js) - Google Analytics