前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Mysql学习笔记(一)创建触发器

Mysql学习笔记(一)创建触发器

作者头像
forrestlin
发布2018-05-23 17:37:32
1.8K0
发布2018-05-23 17:37:32
举报
文章被收录于专栏:蜉蝣禅修之道蜉蝣禅修之道

1.语法CREATE TRIGGER trigger_name trigger_time trigger_event

代码语言:javascript
复制
              ON tbl_name FOR EACH ROW trigger_stmt

trigger_time是触发程序的动作时间。它可以是BEFORE或AFTERtrigger_event指明了激活触发程序的语句的类型。trigger_event可以是下述值之一:

代码语言:javascript
复制
·             INSERT:将新行插入表时激活触发程序,例如,通过INSERT、LOAD DATA和REPLACE语句。
·             UPDATE:更改某一行时激活触发程序,例如,通过UPDATE语句。
·             DELETE:从表中删除某一行时激活触发程序,例如,通过DELETE和REPLACE语句。
代码语言:javascript
复制
      2. 可能遇到的问题

            2.1如果你在触发器里面对刚刚插入的数据进行了 insert/update, 会造成循环的调用.

            如:

create trigger test before update on test for each row update test set NEW.updateTime = NOW() where id=NEW.ID; END

            应该使用set:

create trigger test before update on test for each row set NEW.updateTime = NOW(); END

2.2如果你在触发器中对操作表的其他行进行操作,会报出以下错误:

Can't update table 'xxx' in stored function/trigger because it is already used by statement which invoked this stored function/trigge

该问题我也不知道如何解决

     3.触发器 与存储过程

触发程序不能调用将数据返回客户端的存储程序,也不能使用采用CALL语句的动态SQL

代码语言:javascript
复制
       (允许存储程序通过参数将数据返回触发程序)。 

          而存储过程  可以接受参数,将结果范围给应用程序

    4.在workbench中创建触发器

在sql语句窗口创建触发器时,需要delimiter $$ end $$ delimter ;包围。注意最后的delimter与分号间有空格,不然会报错。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2013年04月14日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档