sqlserver transact-sql UPDATE tran 用事务处理更新语句
有时需要运用 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 用事务处理更新语句相关推荐
- SQL update 多表连接方法
SQL Update多表联合更新的方法 (1) sqlite 多表更新方法 //---------------------------------- update t1 set col1=t2.col ...
- sql子查询示例_SQL更新查询示例说明
sql子查询示例 In this article, we're going to learn how to use the SQL update statement - what it is, wha ...
- Oracle\MS SQL Server的数据库多表关联更新UPDATE与多表更新
一条Update更新语句是不能更新多张表的,除非使用触发器隐含更新.而表的更新操作中,在很多情况下需要在表达式中引用要更新的表以外的数据.我们先来讨论根据其他表数据更新你要更新的表 一.MS S ...
- centos写mysql光标移到上一行_mysql:一条SQL更新语句(update)是如何执行的
一条更新语句的执行流程又是怎样的呢? 之前你可能经常听DBA同事说,MySQL可以恢复到半个月内任意一秒的状态,惊叹的同时,你是不是心中也会不免会好奇,这是怎样做到的呢? 我们还是从一个表的一条更新语 ...
- 谈谈mysql update语句 set顺序问题、列交换sql实现及多表更新注意事项
绝大多数数据库,在执行sql update语句时,update t set a = b, b=a 便可实现ab列值互换,赋值表达式右侧的值取的都是原始值.mysql则是例外,其单表更新是自左到右依 ...
- SQL UPDATE 语句(更新表中的记录)
SQL UPDATE 语句 UPDATE 语句用于更新表中已存在的记录. 还可以使用AND或OR运算符组合多个条件. SQL UPDATE 语法 具有WHERE子句的UPDATE查询的基本语法如下所示 ...
- jstl mysql 更新_jstl sql:update标签
标签执行不返回数据的SQL语句(非查询语句); 例如:INSERT,UPDATE或DELETE语句. 属性 标签具有以下属性 - 属性 描述 必需 默认 sql 要执行的SQL命令(不返回结果集) 否 ...
- 在SQL Server中使用JOIN更新表?
我想更新在其他表上进行联接的表中的列,例如: UPDATE table1 a INNER JOIN table2 b ON a.commonfield = b.[common field] SET a ...
- Transact SQL 常用语句以及函数
Transact SQL 语 句 功 能 ======================================================================== --数据 ...
- 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 ...
最新文章
- Win10系统和子系统Ubuntu16.04 安装 ros
- 【408预推免复习】操作系统之存储器管理
- 基于P2P协议通信模式的选型(一)
- mysql 表与表之间的条件比对_值得收藏 | 一份最完整的MySQL规范
- 算法题目——整数划分(HRBUST-2004)
- java多线池_java多线程之线程池
- 直接使用临时变量导致的一个bug记录
- Spring中三种编程式事务的使用
- win10永久设置护眼颜色
- 脑虎科技CEO彭雷专访│脑机未来,生命科学的无尽前沿
- 聊天系统服务器端类图,使用Java多线程来实现多人聊天室 附实例代码
- 天啦噜!我竟然见到了超级网红区块链本人
- Dynamic GCN:Dynamic GCN: Context-enriched Topology Learning for Skeleton-based Action Recognition
- 中兴换头;任正非表态中美差距还有 50 年;Google 回应隐私丑闻 | CSDN 极客头条...
- 女神节 | 女性工程师 · 她说
- PTA航空公司VIP客户查询c++版——山东科技大学
- 约瑟夫问题C语言实现——N个人排成一队循环报数,报M的倍数的出列,最后剩下的的是原来队列的第几位
- 百度智能云的“星辰大海”
- 改变不了环境,学会改变自己!
- Java日志框架-SLF4J入门