sqlserver 触发器/计算两个时间的间隔天数/查询倒数第二条数据

今天在做项目的时候遇到了一个问题,这个问题用触发器来做能节省很大的代码 而且还比较高效

 

create trigger trigger_name--创建语句

on table_name
for insert/delete/update 或者都可以

as

////这里是执行语句

 

在数据库中使用触发器

不管是insert delete 还是update 都有临时表保存

 

insert 对应 inserted表 保存刚插入的数据

同理 deleted 

update 没有 update可以看做是先删除后插入 这是一种设计模式。 具体可以看看ms的petshop 里面有这个实例。

 

计算两个日期相隔的天数

 CREATE FUNCTION f_WorkDay( @dt_begin datetime, --计算的开始日期 @dt_end datetime --计算的结束日期 )RETURNS int AS BEGIN declare @i int select @i=abs(datediff(dd,@dt_begin,@dt_end)) declare @t table(dt datetime) if @dt_begin>@dt_end insert @t select dateadd(dd,number,@dt_end) from master..spt_values where number<=@i and type='P' else insert @t select dateadd(dd,number,@dt_begin) from master..spt_values where number<=@i and type='P' return(select count(*) from @t where (datepart(weekday,dt)+@@datefirst-1)%7 between 1 and 5) END

 

 

获取倒数第二条数据

select * from table a where (select count(-1) from table b where a.LogId<b.LogId)=(select count(-1) from a)-1

你可能感兴趣的:(设计模式,function,table,delete,sqlserver,insert)