触发器与java程序哪个更好?比较触发器与java程序处理

 有些人喜欢用java程序处理一些数据库事件,如时间.有人喜欢在java程序中new Date()然后持久化;再比如一个新闻留言次数、新闻被浏览次数,每次增加的时候,就把新闻表相关字段给update一下

 

也有一些朋友喜欢使用数据库默认方法,比如时间处理,程序中insert时压根就没有时间,数据库中默认sysdate;也有的用触发器,留言表每增加一条记录,新闻表被触发器修改相关字段。

 

到底使用哪种方法更好?个人觉得两种方法都有可行之处:比如吃鱼,从头开始还是从尾巴开始抑或是从肚子开始?没有人硬规定从哪里下口最好。纯属个人习惯、爱好。

 

不过,从提高效率从发,习惯和爱好的观点就得靠后站了。举例:

 

 

1、数据表的建立

use login

create table voteMaster   -----主表
(
voteId int primary key,    --编号
voteTitle varchar(100) not null,   ---投票的项目
voteSum int default 0   --总票数,默认为0
)
insert into voteMaster values(1,'选举工会主席',0)
insert into voteMaster values(2,'对网站的建议',0)

create table voteDetails    ---从表
(
voteId int foreign key references voteMaster(voteId),----外键 约束
voteDetailsId int not null,
voteItem varchar(20) not null,
votNum int default 0,
primary key(voteId,voteDetailsId)          ----连合主键
)


insert into voteDetails values(1,1,'于海涛',0)
insert into voteDetails values(1,2,'王小刚',0)
insert into voteDetails values(1,3,'张老三',0)

insert into voteDetails values(2,1,'非常好',0)
insert into voteDetails values(2,2,'好',0)
insert into voteDetails values(2,3,'一般',0)
insert into voteDetails values(2,4,'需要改进',0)

2、触发器的创建

create trigger updateMaster   -----创建触发器
on voteDetails     -----触发器所建的表
for update         -----触发器的条件
as
begin
           update voteMaster set voteSum=voteSum+1 where voteId=(select top 1 voteid from inserted)
end

最终效果:

你只要对voteDetails 内votNum的数据进行更新,那么主表voteMaster 的voteSum就会加1,从而实现了对投票的总数的统计的实现。

注意:    select top 1 voteid from deleted

          inserted表   deleted表
insert          新插入的行                                             空
update        数据库受到影响的行在更新之后的新值          数据库受到影响的行在更新之前的旧值 
delete         空                                                          删除的行

 

总结:本着提高程序效率着想,能用触发器的地方,还是尽量用触发器吧:)

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值