Mysql触发器实例教程(创建 删除 修改 查看)
发布:smiling 来源: PHP粉丝网 添加日期:2014-09-23 22:25:25 浏览: 评论:0
在学习mysql不久接触到了mysql触发器这个新功能了,以前在msssql有了解过但没深入,今天要用到mysql触发器功能了,深入的整理了一些关于触发器相关技术内容,希望对各位有帮助吧.
1.创建触发器的语句:
- CREATE TRIGGER <触发器名称> <--
- { BEFORE | AFTER }
- { INSERT | UPDATE | DELETE }
- ON <表名称>
- FOR EACH ROW
- <触发器SQL语句>
- -触发器
- --create trigger 名字
- --on 表名
- --触发动作
- --for/after insert/update/delete
- --as
- --t-sql
- select * from shop_jb
- --insert into shop_xs values(6,4000,1,GETDATE(),3)
- -- update shop_jb set stock=stock-1 where id=6
- --创建触发器
- create trigger tri1
- on shop5_xs
- after insert
- as
- update shop3_jb set stock=stock-1 where id=6
- ---触发器更新完之后,要查看表
- create trigger tri3
- on shop3_jb
- for update
- as
- select * from shop3_jb
- update shop3_jb set spec='sp-Z99' where id=2
- drop trigger tri1
- ---用存储过程来实现,更新完之后,要查看表
- alter proc proc1
- as
- update shop3_jb set spec='sp-111' where id=2
- select * from shop3_jb
- exec proc1
- ---查看表的触发器
- exec sp_helptrigger 表名
- ---查看表的内容
- exec sp_helptext 触发器名
- ---删除触发器
- drop trigger 触发器名
提示:你必须拥有相当大的权限才能创建触发器(CREATE TRIGGER),如果你已经是Root用户,那么就足够了,这跟SQL的标准有所不同.
实例:example1,创建表tab1,代码如下:
- DROP TABLE IF EXISTS tab1;
- CREATE TABLE tab1(
- tab1_id varchar(11)
- );
- //创建表tab2:
- DROP TABLE IF EXISTS tab2;
- CREATE TABLE tab2(
- tab2_id varchar(11)
- );//开源软件:phpfensi.com
创建触发器:t_afterinsert_on_tab1
作用:增加tab1表记录后自动将记录增加到tab2表中,代码如下:
- DROP TRIGGER IF EXISTS t_afterinsert_on_tab1;
- CREATE TRIGGER t_afterinsert_on_tab1
- AFTER INSERT ON tab1
- FOR EACH ROW
- BEGIN
- insert into tab2(tab2_id) values(new.tab1_id);
- END;
测试一下:INSERT INTO tab1(tab1_id) values('0001');
看看结果估计两个表都有相同数据,代码如下:
- create trigger tri1
- on shop3_jb
- after insert
- as
- select * from inserted
- insert into shop3_jb values('洗衣机','aa',200,500,getdate())
- select * from shop3_jb
- exec sp_helptrigger shop3_jb
- exec sp_helptext tri1
- drop trigger tri1
- create trigger tri2
- on shop3_jb
- after delete
- as
- select * from deleted
- delete from shop3_jb where namel='笔记本'
- select * from shop3_jb
- ---查看表的触发器
- exec sp_helptrigger 表名
- ---查看表的内容
- exec sp_helptext 触发器名
- ---删除触发器
- drop trigger 触发器名
- select * from shop5_xs
- select * from shop3_jb
- //开源软件:phpfensi.com
补充语法
触发器 语法
3.1 CREATE TRIGGER trigger_name trigger_time trigger_event
ON tbl_name FOR EACH ROW trigger_stmt
trigger_time是触发程序的动作时间,它可以是BEFORE或AFTERtrigger_event指明了激活触发程序的语句的类型,trigger_event可以是下述值之一.
• INSERT:将新行插入表时激活触发程序,例如,通过INSERT、LOAD DATA和REPLACE语句。
• UPDATE:更改某一行时激活触发程序,例如,通过UPDATE语句.
• DELETE:从表中删除某一行时激活触发程序,例如,通过DELETE和REPLACE语句.
3.2 可能遇到的问题
如果你在触发器里面对刚刚插入的数据进行了 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
3.3 触发器 与存储过程
触发程序不能调用将数据返回客户端的存储程序,也不能使用采用CALL语句的动态SQL,允许存储程序通过参数将数据返回触发程序,而存储过程可以接受参数,将结果范围给应用程序.
Tags: Mysql触发器 Mysql创建
- 上一篇:解决mysql无法远程连接问题
- 下一篇:Mysql数据库中对表操作sql语句总结
相关文章
- ·mysql触发器trigger操作memcache实例(2014-09-23)
- ·mysql 触发器update替代new用法详解(2014-09-28)
- ·MySQL中触发器入门简单实例(2014-10-03)
- ·学习笔记之MySQL触发器详解(2014-10-09)
- ·mysql中触发器的简单实例(2014-10-13)
- ·mysql中创建修改删除数据表例子(2014-09-23)
- ·MySQL创建新用户并授权的示例(2014-09-23)
- ·mysql创建和删除索引的笔记(2014-09-24)
- ·MySQL索引操作命令,创建索引,重建索引,查询索引,删除索引(2014-09-25)
- ·MySQL创建全文索引学习笔记(2014-09-26)
- ·MySQL创建函数报“ERROR 1418 ”错误,不能创建函数(2014-09-27)
- ·MySQL中创建、修改和删除表命令(2014-09-27)
- ·mysql创建与删除临时表sql语句(2014-09-29)
- ·MySQL创建表与删除表语句(2014-09-29)
- ·MySQL创建函数出现1418错误解决办法总结(2014-10-02)
- ·MySQL数据库的创建选择与删除命令详解(2014-10-02)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)