有时需要运用 transact-sql 直接进行一些 UPDATE ,并且此次update正确影响的行数我们是知道的,为了能够确保update所影响的行数达到我们的预期,如果不符,需要回滚此次更新,故,需要用到sqlserver的tran

建表,A,B

create table A
(
姓名 nvarchar(20),
课程 nvarchar(20)
)
create table B
(
姓名 nvarchar(20),
课程 nvarchar(20)
)

插入数据

INSERT INTO A(姓名,课程) VALUES ('小明','数学'),('小红','物理'),('小王','语文')
INSERT INTO B(姓名,课程) VALUES ('小明','数学'),('小红','生物'),('小王','地理')

可见结果:
表A

表B

现需按照相同姓名,并且课程不同的,将B的课程更新到与A相同

BEGIN TRAN
UPDATE A
SET A.课程=B.课程
FROM B WHERE A.姓名=B.姓名 AND A.课程<>B.课程
IF @@ROWCOUNT<>3 BEGIN ROLLBACK END
COMMIT

sqlserver 返回结果:

(2 行受影响)
消息 3902,级别 16,状态 1,第 6 行
COMMIT TRANSACTION 请求没有对应的 BEGIN TRANSACTION。

@@ROWCOUNT为UPDATE的受影响行数
因该语句,受影响行数=2,不等于3,故会进行ROLLBACK,不会执行成功.

正确的SQL语句:

BEGIN TRAN
UPDATE A
SET A.课程=B.课程
FROM B WHERE A.姓名=B.姓名 AND A.课程<>B.课程
IF @@ROWCOUNT<>2 BEGIN ROLLBACK END
COMMIT

执行结果,A,B如图,完全相同:

sqlserver transact-sql UPDATE tran 用事务处理更新语句相关推荐

  1. SQL update 多表连接方法

    SQL Update多表联合更新的方法 (1) sqlite 多表更新方法 //---------------------------------- update t1 set col1=t2.col ...

  2. sql子查询示例_SQL更新查询示例说明

    sql子查询示例 In this article, we're going to learn how to use the SQL update statement - what it is, wha ...

  3. Oracle\MS SQL Server的数据库多表关联更新UPDATE与多表更新

    一条Update更新语句是不能更新多张表的,除非使用触发器隐含更新.而表的更新操作中,在很多情况下需要在表达式中引用要更新的表以外的数据.我们先来讨论根据其他表数据更新你要更新的表 一.MS    S ...

  4. centos写mysql光标移到上一行_mysql:一条SQL更新语句(update)是如何执行的

    一条更新语句的执行流程又是怎样的呢? 之前你可能经常听DBA同事说,MySQL可以恢复到半个月内任意一秒的状态,惊叹的同时,你是不是心中也会不免会好奇,这是怎样做到的呢? 我们还是从一个表的一条更新语 ...

  5. 谈谈mysql update语句 set顺序问题、列交换sql实现及多表更新注意事项

      绝大多数数据库,在执行sql update语句时,update t set a = b, b=a 便可实现ab列值互换,赋值表达式右侧的值取的都是原始值.mysql则是例外,其单表更新是自左到右依 ...

  6. SQL UPDATE 语句(更新表中的记录)

    SQL UPDATE 语句 UPDATE 语句用于更新表中已存在的记录. 还可以使用AND或OR运算符组合多个条件. SQL UPDATE 语法 具有WHERE子句的UPDATE查询的基本语法如下所示 ...

  7. jstl mysql 更新_jstl sql:update标签

    标签执行不返回数据的SQL语句(非查询语句); 例如:INSERT,UPDATE或DELETE语句. 属性 标签具有以下属性 - 属性 描述 必需 默认 sql 要执行的SQL命令(不返回结果集) 否 ...

  8. 在SQL Server中使用JOIN更新表?

    我想更新在其他表上进行联接的表中的列,例如: UPDATE table1 a INNER JOIN table2 b ON a.commonfield = b.[common field] SET a ...

  9. Transact SQL 常用语句以及函数

    Transact SQL  语 句 功 能  ======================================================================== --数据 ...

  10. ScottGu之博客翻译-LINQ to SQL第四部分,更新数据库 LINQ to SQL (Part 4 - Updating our Database)...

    原贴链接: http://weblogs.asp.net/scottgu/archive/2007/07/11/linq-to-sql-part-4-updating-our-database.asp ...

最新文章

  1. Win10系统和子系统Ubuntu16.04 安装 ros
  2. 【408预推免复习】操作系统之存储器管理
  3. 基于P2P协议通信模式的选型(一)
  4. mysql 表与表之间的条件比对_值得收藏 | 一份最完整的MySQL规范
  5. 算法题目——整数划分(HRBUST-2004)
  6. java多线池_java多线程之线程池
  7. 直接使用临时变量导致的一个bug记录
  8. Spring中三种编程式事务的使用
  9. win10永久设置护眼颜色
  10. 脑虎科技CEO彭雷专访│脑机未来,生命科学的无尽前沿
  11. 聊天系统服务器端类图,使用Java多线程来实现多人聊天室 附实例代码
  12. 天啦噜!我竟然见到了超级网红区块链本人
  13. Dynamic GCN:Dynamic GCN: Context-enriched Topology Learning for Skeleton-based Action Recognition
  14. 中兴换头;任正非表态中美差距还有 50 年;Google 回应隐私丑闻 | CSDN 极客头条...
  15. 女神节 | 女性工程师 · 她说
  16. PTA航空公司VIP客户查询c++版——山东科技大学
  17. 约瑟夫问题C语言实现——N个人排成一队循环报数,报M的倍数的出列,最后剩下的的是原来队列的第几位
  18. 百度智能云的“星辰大海”
  19. 改变不了环境,学会改变自己!
  20. Java日志框架-SLF4J入门

热门文章

  1. android 手指滑动顺时针逆时针判断
  2. 面试时候被问到为什么离职 离职原因 该如何回答?
  3. 百度招聘Android客服端(2)
  4. 【史上最全 | 编程入门指南无标题】
  5. 肖邦 第一叙事曲 赏析
  6. 【12c】直方图Histograms
  7. 突然看到微信还有这种赞赏码
  8. QQ城市达人接口编程及经验分享2--新接口
  9. Python之数据容器
  10. 线上故障之-CPU飙高