SQL Server 2008中利用merge into关键实现insert/update自动匹配(类似于MySQL中的For Update关键字)

语法请参考:

按照语法编写语句

DECLARE @OpenID VARCHAR(150);

SET @OpenID = '5';

MERGE INTO wx AS T

USING (SELECT [User_ID] FROM wx WHERE OpenId = @OpenId) AS S ON T.[User_ID]=S.[User_ID]

WHEN MATCHED THEN

UPDATE SET T.Invalid = 0, T.Updater = 1, T.UpdateTime = GETDATE()

WHEN NOT MATCHED THEN

INSERT (OpenId, Creator, CreateTime, Invalid) VALUES(@OpenID, 1, GETDATE(), 0);

发现添加语句不起作用

仔细看了语句,再逐行分析,突然想起来NOT MATCHED后面其实是省略了一个关键字BY TARGET的

意思是:TARGET中没有,而SOURCE中有的话,向TARGET表中添加一条数据

但其实在上例中,要添加数据时,openid是不存在的

调整语句,执行成功,问题解决:

DECLARE @OpenID VARCHAR(150);

SET @OpenID = '5';

MERGE INTO wx_User AS T

USING (SELECT @OpenID) AS S(OpenId) ON T.[OpenId] = S.[OpenId]

WHEN MATCHED THEN

UPDATE SET T.Invalid = 0, T.Updater = 1, T.UpdateTime = GETDATE()

WHEN NOT MATCHED THEN

INSERT (OpenId, Creator, CreateTime, Invalid) VALUES(@OpenID, 1, GETDATE(), 0);

mysql中的merge into,SQL Server 2008中利用merge into关键实现insert/update自动匹配(类似于MySQL中的For Update关键字)...相关推荐

  1. SQL Server 2008 问题——已成功与服务器建立连接,但是在登录过程中发生错误。

    登录报错:已成功与服务器建立连接,但是在登录过程中发生错误. (provider: 共享内存提供程序, error: 0 - 管道的另一端上无任何进程. 解决办法:先用windows模式登录上去,然后 ...

  2. 在SQL Server 2008中调用.net,dll

    T-SQL的在执行普通的查询的时候是很高效的,但是在执行循环,判断这样的语句的时候效率就不那么的高了.这时可以借助CLR了,我们可以在SQL Server 2008中扩展C#程序来完成循环等过程式的查 ...

  3. SQL Server 2008性能故障排查(二)——CPU

    原文: SQL Server 2008性能故障排查(二)--CPU 承接上一篇:SQL Server 2008性能故障排查(一)--概论 说明一下,CSDN的博客编辑非常不人性化,我在word里面都排 ...

  4. 详细介绍微软SQL Server 2008

    SQL Server 2008是一个重大的产品版本,它推出了许多新的特性和关键的改进,使得它成为至今为止的最强大和最全面的SQL Server版本.这篇文章详细介绍了Microsoft SQL Ser ...

  5. 微软 Sql Server 2008

    详细介绍微软SQL Server 2008 http://dev.yesky.com/264/7681264_4.shtml 2007-11-25 09:00 作者: 戴羽 出处: IT专家网 责任编 ...

  6. 解析SQL Server 2008的精妙之处

    关键词:SQL Server 2008,仪表盘 安装 SQL Server 2008的设置和安装也有所改进.配置数据和引擎位已经分开了,所以它使创建基本的未配置系统的磁盘图像变得可能了,它使分布到多个 ...

  7. SQL Server 2008备份大全实战(七)

    这一篇博文探讨下SQL Server 2008 备份的实际操作,事实上SQL Server 2008并不关心数据是备份到物理磁盘上还是磁带上,在SQL Server 2008数据库备份中,预定义的目标 ...

  8. SQL Server 2008基于策略的管理

    基于策略的管理(Policy Based Management),使DBA们可以制定管理策略,并将这些策略应用到服务器.数据库以及数据环境中的其他对象上去.经过精心设计的管理策略可以帮助DBA们对数据 ...

  9. 创建集成含有SQL Server 2008 RTM + Service Pack 1 的安装 (翻译)

    原文链接http://blogs.msdn.com/petersad/archive/2009/02/25/sql-server-2008-creating-a-merged-slisptream-d ...

最新文章

  1. 宁夏计算机专科大学排名,2019年民办学校排行榜_科普2019年宁夏专科学校排名及2019宁夏民办高校排...
  2. 【Android】Eclipse JNI开发
  3. MySQL date_add()函数​​​​​​​
  4. java多个类调用_JAVA问题总结之15-多个类之间的调用
  5. 自己配置python环境_windows下python环境的配置
  6. 2.2 获取图像感兴趣区域_基于Hu距的图像旋转矫正之OpenCV实现
  7. 多线程-Threading
  8. layout elements
  9. C#中的方法(函数),委托和事件
  10. Python——python3的requests模块的导入
  11. 那些让您相见恨晚的app
  12. linux中红帽系统下载地址,Redhat8.3系统下载
  13. Verilog HDL实现智能药盒
  14. 阿里云云数据库RDS快速使用教程
  15. C语言入门——初识C语言
  16. java统计每个单词单词出现的次数_Java统计英文句子中出现次数最多的单词并计算出现次数的方法...
  17. 卡方检验——离散型特征相关性分析
  18. 远程开启或唤醒休眠的计算机
  19. 【PowerQuery】Excel 自动刷新PowerQuery连接
  20. 伤寒论文本搜索(grep)

热门文章

  1. WINCE6.0 chain.bin和xipkernel.bin解析
  2. 电梯维修属于什么服务器,电梯维修属于建筑服务中的修缮服务吗?
  3. Maven学习总结(8)——使用Maven构建多模块项目
  4. Flutter开发环境安装
  5. [Jobdu] 题目1214:丑数
  6. 455. Assign Cookies - LeetCode
  7. 专车降价滴滴快车使命终结?
  8. 当深度学习遇上异构并行计算
  9. 使用Mybatis的Generator可能导致的一个错误
  10. 进阶:案例六: Context Menu(静态 与 动态)