触发器 监视某列
触发器 例如我要监视
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
[解决办法]
不能外部传递参数。上面其实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 还是说行的?