引言:
触发器的作用就不用说了吧,也许你在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