SqlServer Update触发器判断某个字段的值是否已经更改
来源:互联网 发布:c语言无限弹窗代码 编辑:程序博客网 时间:2024/04/29 06:07
要求:修改主表中某个字段的值,自动更新子表中的某个字段
我们为了不更改程序,创建一个update触发器。
create trigger [tig_update] on 表名after update as declare @id intbeginif (update(主表列名))beginselect @id=id from insertedupdate 子表名 set lasttime = GETDATE() where pid = @idendend
效果好像不对, 单用if update(a), 也体现不出效果, 为什么? 如果我们执行
update 主表 set 列名a=原来的值 where id = id
发现也触发这个事件,这是不对的,只有列名a的值发生了改变,我们才能修改子表的数据啊:
我们改为以下的触发器,效果就出来了
create trigger [tig_update] on 表名
after update
as
declare @id int,
@upflag intbegin
select @upflag = case when a.列名=b.列名 then 0 else 1 end, @id=a.id from deleted a left join inserted b on a.id = b.id
if (@upflag>0)
endupdate 子表名 set lasttime = GETDATE() where pid = @id
解释一下,deleted表中存的是修改前的值,inserted中存的是修改后的值,这样是不是更好呢!
0 0
- SqlServer Update触发器判断某个字段的值是否已经更改
- 如何判断Oracle中某个字段的值是否重复
- SQL判断某个表、存储过程、触发器、函数、某个字段是否存在
- sqlserver-触发器-判断更新了哪个字段。
- 判断是否已经运行了某个程序
- android判断某个应用是否已经安装
- 判断某个进程是否已经启动
- 判断某个apk是否已经安装
- 判断某个软件是否已经启动
- Andoird判断某个APK是否已经安装
- 创建标量值函数判断某个字段是否包含中文
- 检查某个字段的值是否重复
- 在oracle中判断某个字段的值是否为数字
- 判断某个字段是否为数字
- 判断sqlite是否包含某个字段
- js判断json是否存在某个字段
- spring mvc 检查添加的某个字段是否在数据库里已经存在
- sqlserver 判断字段是否有汉字
- 文件的操作.
- linux ssh互信配置 - 服务器间免密码登陆
- AFNetwork 作用和用法详解
- typedef和#define的区别
- 最长对称子串
- SqlServer Update触发器判断某个字段的值是否已经更改
- Java绘图原理(一) Graphics的各种。。
- 安装apache2.4版本中需要注意的问题(2)
- python hasattr() getattr() setattr()函数的使用
- Linux常用命令:tail 命令
- 05-树9 Huffman Codes
- IntelliJ IDEA 14.x 与 Tomcat 集成,并运行Web项目
- fetch oracle 存储过程
- makefile自定义函数