请大手救急!怎样将数据库表中某列符合查询条件的字段值自动加1或减1?
有一网站新闻发布表news,按如下建表命令建立:
create table news
(auto_id int identity(1,1) constraint PK_news primary key clustered,
pub_time datetime default getdate(),
title varchar(80),
detail text,
news_id int default 0,
keepdays int default 1)
auto_id是自增加的新闻流水号
pub_time是新闻发布时间,默认取加入记录时的系统时间
title是新闻标题
detail是新闻细节
news_id是新闻发表的排列顺序号,缺省值为0
keepdays是新闻在发布版面上的保留天数,缺省值为1
现于news表的insert上建一触发器,如下:
CREATE TRIGGER trg_PublishNews_t ON dbo.news_t
FOR INSERT
AS
declare @curdate int
declare @maxdate int
set @curdate=convert(int,getdate(),112)
set @maxdate=convert(int,getdate()-(select pub_time from news_t where auto_id=(select max(auto_id) from news_t)),112)
if(@curdate>@maxdate)
begin
update news_t set keepdays=keepdays-1 where keepdays>0
end
update news_t set news_id=news_id+1 where news_id<>0
update news_t set news_id=1 from inserted
上面的触发器主要想达到的效果是,在插入时,将原来的新闻发布号自动加1,
即向下滚动。新插的这条记录的新闻发布号news_id置1(放在最前边)。
再看看日期是否正好变为下一天,
如果是,就将保留天数自动减1(为0则不减)。
但上边的Trigger有错,不能实现相应的功能!
请各位高手惠赐妙招!多谢!感激不尽!涕泪横流,哗哗地!!!