在触发器中如何做到对表的某一个字段修改才进行触发,对其他字段的修改不触发?

nimweb 2003-10-08 10:58:35
RT
...全文
329 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
pingfzp 2003-10-08
  • 打赏
  • 举报
回复
呵呵!! UP~~~~~~~~~~~~~~~~~~
nimweb 2003-10-08
  • 打赏
  • 举报
回复
为什么我把if Update(字段)放在AS 和begin之间居然没反应

而把if Update(字段)放在begin……end 之间进行判断,居然能行??

这是什么原因?

awjx 2003-10-08
  • 打赏
  • 举报
回复
好帖!
txlicenhe 2003-10-08
  • 打赏
  • 举报
回复
一样即可,楼主可以自己试一下
nimweb 2003-10-08
  • 打赏
  • 举报
回复
楼上没理解我的意思

我的意思还是和标题一样,就是对列的判断

在insert的情况下是否也用if udate(字段)来判断呢?

create trigger 触发器名 on 表
For insert,update
As
if update(字段1)
begin
...
end
pengdali 2003-10-08
  • 打赏
  • 举报
回复
那对insert的呢??
我现在的触发器是把Insert,update写在一起。
有什么好的方法处理呢?

--判断是否是insert
if not exists(select 1 from deleted)
select '是添加'
else
select '是修改'


另外问一下,在触发器里面rollback transaction 会把触发器外的事物也给回滚掉?
是的,会
yangwl 2003-10-08
  • 打赏
  • 举报
回复
把Insert,update写在一起的例子
CREATE TRIGGER reminder
ON titles
FOR INSERT, UPDATE
AS
……
GO
nimweb 2003-10-08
  • 打赏
  • 举报
回复
那对insert的呢??
我现在的触发器是把Insert,update写在一起。
有什么好的方法处理呢?

另外问一下,在触发器里面rollback transaction 会把触发器外的事物也给回滚掉?
pengdali 2003-10-08
  • 打赏
  • 举报
回复
表可以有多个触发器。CREATE TRIGGER 语句可以与 FOR UPDATE、FOR INSERT 或 FOR DELETE 子句一起使用,指定触发器专门用于特定类型的数据修改操作。当指定 FOR UPDATE 时,可以使用 IF UPDATE (column_name) 子句,指定触发器专门用于具体某列的更新。

pengdali 2003-10-08
  • 打赏
  • 举报
回复
if update(列名)
begin
......你的代码
end
txlicenhe 2003-10-08
  • 打赏
  • 举报
回复
create trigger 触发器名 on 表
For Update
As
if update(字段1)
begin
...
end

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧