标签归档:update

mssql sqlserver 触发器中update()关键字说明简介


摘要:
下文讲述触发器中update()关键字的用法,如下所示:
实验环境:sqlserver 2008 R2


update()功能说明

update()函数的功能是检测列值是否被修改

update()举例说明

 create table A(keyId int, info varchar(30))   
 go
 create table ALog(keyId int, info varchar(30),
                           sort nvarchar(30),
    updatetime datetime default getdate())
  go
---生成基础数据
 insert into A(keyId,info)values(1,N'sql博客'),(2,N'sql教程')
go

---创建update触发器和update函数应用
create trigger tr_A 
   on A
 after update 
 as 
   if (update(keyId) or update(info))  ---检测列是否改动
   begin
    insert into ALog(keyId,info,sort)
     select keyId,info,N'修改前' from deleted 
    insert into ALog(keyId,info,sort)
     select keyId,info,N'修改后' from inserted 
   end
go

update A set keyId=100,info='aa' 
  where keyId =1 
   go
select * from ALog
  go

update A set keyId=98,info='testInformation' 
  where keyId =100 
   go
select * from ALog
  go


   truncate table A
   drop       table A 
    go
   truncate table ALog
   drop       table ALog 
    go

mssql sqlserver 使用视图(view)更新数据的方法分享


摘要:
下文讲述使用视图(view)的方式更新数据的方法,如下所示:
实验环境:sql server 2008 R2


视图更新数据的思路为:
首先创建一个视图,然后对视图执行update操作
例:

  create view vw_temp 
  as 
     select a.keyId,a.name,
              b.info  from tableName1 a 
                   left join tableName2 b on a.keyId = b.keyId 
 go 
     update vw_temp  set info =N'sql教程博客' 
     where keyId =88
     ---运行以上sql脚本info值会被更新至响应的表tableName1中


注意事项:
1.视图更新数据的方式同cte表达式更新数据的方式类似
2.并不是所有的视图都可以执行更新操作

mssql sqlserver 使用cte表达式更新数据的方法分享


摘要:
下文讲述使用cte表达式的方式更新数据的方法,如下所示:
实验环境:sql server 2008 R2


cte表达式更新数据的思路为:
首先使用select查询语句将所需数据联接起来,并放入cte表达式中,
然后对cte表达式执行update操作,数据会更新至cte表达式所引用的表中,例:

  with cte_temp as 
   (
     select a.keyId,a.name,
              b.info  from tableName1 a 
                   left join tableName2 b on a.keyId = b.keyId 
    )
     update cte_temp set info =N'sql教程博客' 
     where keyId =88
     ---运行以上sql脚本info值会被更新至响应的表tableName1中