sql-server – Sql Server 2005 – 如果不存在则插入
|
互联网上有很多关于这个常见“问题”的信息. 解决方案如: IF NOT EXISTS() BEGIN INSERT INTO (...) END 在我看来并不是线程安全的,你可能会同意. 但是你可以确认将exists存入一个select的where子句会解决sql引擎中最高并发性的问题吗? insert into Table (columns) select column1,column2,column3 where not exists (select top 1 1 from Table where something) 应该还有一些更高的交易水平或 这会在未提交的级别下工作吗? 谢谢! //稍后添加 我可以假设两个sql’都是正确的: 1) IF NOT EXISTS() BEGIN INSERT INTO (...) END 2)设置事务隔离级别可重复读取 insert into Table (columns) select column1,column3 where not exists (select top 1 1 from Table where something) 解决方法使用TRY / CATCH可以避免额外的读取BEGIN TRY
INSERT etc
END TRY
BEGIN CATCH
IF ERROR_NUMBER() <> 2627
RAISERROR etc
END CATCH
> NOT EXISTS将读取表格,无论是在IF还是WHERE 如果您可以丢弃重复项,这是一种高度可扩展的技术 链接: >请在此处查看我的答案:Only inserting a row if it’s not already there和SQL Server 2008: INSERT if not exits,maintain unique column (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- sql-server – 在多个插入或更新周围使用事务的正确方法
- SQL Server 只有mdf文件的数据库附加失败的修复方法分享(置
- 教你如何看懂SQL Server查询计划
- sql-server – 哪个工具来构建一个简单的Web前端到我的数据
- sql-server-2005 – SAS读取sql server 2005中的位数据类型
- centos7下安装oracle11gR2的详细步骤
- ms-office – visio 2007数据库属性窗口不显示
- 使用Subquery vs Left Joins进行MySQL索引优化
- sql-server – 如何将计算列添加到EF4模型?
- 基于mysql查询语句的使用详解
