首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

求动态实时改变表字段值的步骤

2012-12-30 
求动态实时改变表字段值的方法目前需求:现有一张表,里面有字段isTop,endDate。有没有办法让数据库做个监控,

求动态实时改变表字段值的方法
目前需求:现有一张表,里面有字段isTop,endDate。有没有办法让数据库做个监控,如果endDate的字段值小于当前日期getDate()(代表时间过期),就把isTop的值改成false。
各位给点建议!!!
[解决办法]


--创建表
if OBJECT_ID('TableA','u') is not null
drop table TableA
create table TableA
(
isTop bit,
endDate datetime
)
go

--触发器UpdateIsTop
--更新时修改isTop
if OBJECT_ID('UpdateIsTop','TR') is not null
drop trigger UpdateIsTop
go
create trigger MotifyIsTop 
on TableA
for update
as
declare @FlagTime datetime
select @FlagTime = endDate from inserted
if(@FlagTime<GETDATE())
begin
update TableA set isTop=1 where endDate=@FlagTime
end
go


--触发器InsertRecord
--插入时修改isTop
if OBJECT_ID('InsertRecord','TR') is not null
drop trigger InsertRecord
go

create trigger InsertRecord 
on TableA
for insert
as
declare @FlagTime datetime
select @FlagTime = endDate from inserted
if(@FlagTime<GETDATE())
begin
update TableA set isTop=1 where endDate=@FlagTime
end
go

--测试插入
insert into TableA
select 0,DATEADD(D,2, GETDATE())

--结果
--isTop  endDate
--1     2012-12-06 13:28:51.283     //注意这条(isTop被值为1)


--测试修改
--修改前数据
--isTop  endDate
--1     2012-12-06 13:28:51.283
--0     2012-12-10 13:30:34.540     //注意这条

update TableA set endDate='2012-09-20 20:33:33' where endDate>GETDATE()

--修改前数据
--isTop  endDate
--12012-09-20 20:33:33.000
--12012-09-20 20:33:33.000          //注意这条(isTop被值为1)

热点排行
Bad Request.