标签归档:update

mssql sqlserver update 后接两张表的方法分享


摘要:
下文通过举例的方式分享update后关联多张表的更新方法,如下所示:
实验环境:sql server 2008 R2


在我们应用update关键字时,最多的时候我们使用update更新单表,下文分享update更新单表,但是单表后关联多个其它表,如下所示:
常用的update语法格式:

 ---单表更新
 update table set [列名1]='列值1', [列名2]='列值2', [列名3]='列值3' 
     where ...
---多表关联更新
 update [表1]  a  left join  [表2] b on a.keyId = b.keyId 
       set a.[列名] = '列值' 
    where  ...   ---where条件

mssql sqlserver sql update关键字的四种用法分享


下文通过举例的方式分享update关键字的四种用法,如下所示:
实验环境:sql server 2008 R2


update 关键字常见的更新方式:
1. 单表update
2. 多表关联update

例:
测试对象:
订单表A (keyId primary key,billNo,info,note)
订单表B (keyId primary key,billNo,extendInfo)

-- 1.1 单表update单字段
update A  a set a.info = 'test' where a.keyId = '3';

-- 1.2 单表update多字段
update A a set a.info = 'test', a.note = '备注信息' where a.keyId = '8';

/*
  多表关联update 更新,需使用exists进行存在性判断
  避免无法关联到数据的表,被置为null 
*/
-- 2.1 多表关联update单字段
update B b set b.extendInfo = (select a.info from a a where a.keyId = b.keyId)
where exists(select 1 from stu1 t2 where t2.ID = t.ID);

-- 2.2 多表关联update多字段
update a left join b on a.keyId = b.keyId set a.info = '多表更新',b.extendInfo='多表更新'  
 where a.keyId =8 


同时更新多字段注意事项:
同时对不同表中的字段进行同时更新时,需注意表之间必须存在关联,如上2.2所示

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