兴海北路

---男儿仗剑自横行
<2008年3月>
2425262728291
2345678
9101112131415
16171819202122
23242526272829
303112345

统计

  • 随笔 - 85
  • 文章 - 0
  • 评论 - 17
  • 引用 - 0

常用链接

留言簿(6)

随笔分类

随笔档案

收藏夹

全是知识啊

搜索

  •  

最新评论

阅读排行榜

评论排行榜

mysql5触发器使用实例
作者: falcon   发表日期: 2006-05-06 15:13   复制链接



引言:

触发器的作用就不用说了吧,也许你在sqlserver或者其他的数据库里头早就用过触发器拉.所以这里直接介绍mysql5下怎 么使用触发器.具体的语法细则这里也不说,可以到搜索引擎里头搜索"mysql5 触发器",一大堆的参考资料,不过基本上是一个出身,都只简单介绍了语法.没有太多实际的例子.下面就从实际例子出发来学习一下哦.

正文:

我们先假设我们有这样一个用户信息表、用户评价表:
[说明:我们的表可能建得不大规范,不要追究这个,因为仅仅是个演示触发器的例子哦]

表名:(用户表)User_tab、(用户评价表)User_score

User_tab表结构如下:

字段名   字段类型           键     备注
用户编号(id)       int     pk     auto_increment
登陆名(login_name) varchar(20)   not null    
登陆密码(login_pw)   varcahr(20) not null
加密密码(login_enc_pw)   varchar(32)
注册时间(reg_time)   datetime

User_score表结构如下:

用户编号(id)   int fk User_tab(id)
用户评价(score) int


我们对该表有如下操作:

1)在用户注册的时候需要用户输入登陆名、登陆密码,用户编号,加密密码和注册时间由系统自动更新
2)假如我们要删除某个用户信息,那么该用户的评价信息也得删除,我们也让系统自动实现


先创建这两个表哦,代码就不列出拉。

下面我们为了让系统自动实现这些东西,写两个触发器

1)触发器一[更新操作]
功能:在插入用户的登陆名和登陆密码进入数据库之后,系统自动更新该用户的注册时间和加密密码信息(用户编号不用我们做,是因为我们设置了auto_increment,所以系统会自增)
名字:User_tab_before_insert(表名_触发时机_操作)
代码:


Code:

[Ctrl+A Select All]



2)触发器二[删除操作]
功能:在删除某个用户信息之后,系统自动删除该用户的评价信息
名字:User_tab_before_delete
代码:


Code:

[Ctrl+A Select All]



总结:

到这里我们要用的触发器的功能基本实现拉。我们通常要用户要做的操作也就这些:自动实现某些功能,以维护数据库的完整性和一致性。
需要补充的是,在创建那些需要触发器更新的数据的时候,请不要设置not null,否则,由于在插入时会出错。因为它在触发器起作用之前为空。

由于本人水平有限,如有问题,请批评指正,谢谢

为了保持参照完整性,可以通过在对应具有外键约束的字段后面增加ON DELETE CASCADE

具体参考这个
《在MySQL中利用外键实现级联删除!》
http://www.chinaunix.net/jh/17/462977.html

posted on 2008-03-14 16:11 随意门 阅读(508) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理