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

触发器 监视某列解决方法

2013-09-05 
触发器 监视某列触发器 例如我要监视Heat(关注)列更新的时候Heat+1 或者Heat-1这种情况 应该怎么写触发器[

触发器 监视某列
触发器 例如我要监视  
Heat(关注)列更新的时候
Heat+1 或者  Heat-1
这种情况 应该怎么写 触发器
[解决办法]


--1. 建日志表
create table tblog(objectID int,HeatTime datetime)

create trigger tri_U
on tb 
after update
as
begin
if update(Heat)
begin
insert into tblog(objectID,HeatTime)
select ID,getdate() from inserted
end
end

-- 2. 查询日志表
select * from  tblog

[解决办法]
--这个意思?
--1. 建日志表
create table tblog(objectID int,Heat int, newHeat int, HeatTime datetime)
GO

create trigger tri_U
on tb 
after update
as
begin
    if update(Heat)
    begin
insert into tblog(objectID,Heat,newHeat,HeatTime)
select ID,D.Heat,I.Heat,getdate() 
from INSERTED I
INNER JOIN DELETED D
ON I.ID = D.ID
WHERE I.Heat = d.Heat + 1 OR i.Heat = D.Heat - 1
    end
end

GO
-- 2. 查询日志表
select * from  tblog

[解决办法]
引用:
Quote: 引用:

--这个意思?
--1. 建日志表
create table tblog(objectID int,Heat int, newHeat int, HeatTime datetime)
GO

create trigger tri_U
on tb 
after update
as
begin
    if update(Heat)
    begin
insert into tblog(objectID,Heat,newHeat,HeatTime)
select ID,D.Heat,I.Heat,getdate() 
from INSERTED I
INNER JOIN DELETED D
ON I.ID = D.ID
WHERE I.Heat = d.Heat + 1 OR i.Heat = D.Heat - 1


    end
end

GO
-- 2. 查询日志表
select * from  tblog


我说清楚点吧  监视Heat+1  或者Heat-1  然后判断是那种结果
执行不同的操作.
也就是
if(Heat+1)
{
插入
}
if(Heat-1)
{
删除
}


对了 还想请问下触发器可以接受外部传递的参数吗

不能外部传递参数。上面其实Shawn已经给出你列子了,你可以用inserted和Delted两张表数据比对,根据逻辑关系作删除或者插入。但是使用Trigger管理上很不方便,所以如果可以在应用程序中直接做的话会更好。


[解决办法]
触发器一般用于对于表进行增删改操纵时,然后可以在表上建立前或后触发器,执行相关的业务。你这个情况建议在针对该字段进行修改的地方,无论是代码或者存储过程中都可以加入if……else……代码进行处理
[解决办法]
create trigger tri_U
on tb 
after update
as
begin
    if update(Heat)
    BEGIN
INSERT INTO tableA(id, heat)--支持同时插入多条记录.
        select ID,D.Heat
        from INSERTED I
            INNER JOIN DELETED D
                ON I.ID = D.ID
        WHERE I.Heat = d.Heat + 1

DELETE A
FROM tableB A
INNER JOIN INSERTED I
ON a.id  = i.id
            INNER JOIN DELETED D
                ON I.ID = D.ID
        WHERE I.Heat = d.Heat - 1
    end
end
GO

[解决办法]
你举个例子说清楚吧,监视heat+1或者heat-1

不是heat

你这到底是哪门子意思,是值的加减1 还是说行的?

热点排行