相关疑难解决方法(0)

SQL Server中的唯一密钥冲突 - 假设错误2627是否安全?

我需要UNIQUE通过我正在开发的C#应用​​程序以特殊方式捕获对约束的违反.可以安全地假设它Error 2627总是对应于这种违规行为,以便我可以使用

if (ThisSqlException.Number == 2627)
{
    // Handle unique constraint violation.
}
else
{
    // Handle the remaing errors.
}
Run Code Online (Sandbox Code Playgroud)

sql-server-2005 unique-constraint

68
推荐指数
2
解决办法
6万
查看次数

Sql Server 2005 - 如果不存在则插入

互联网上有很多关于这个常见"问题"的信息.

解决方案如:

IF NOT EXISTS() BEGIN INSERT INTO (...) END
Run Code Online (Sandbox Code Playgroud)

在我看来并不是线程安全的,你可能会同意.

但是你能否确认将exists存入一个select的where子句会解决sql引擎中最高并发性的问题?够了吗?

insert into Table (columns)
select column1, column2, column3
where not exists (select top 1 1 from Table where something)
Run Code Online (Sandbox Code Playgroud)

应该在那里还添加了一些更高的事务级别,还是可以在默认的一个上执行:commit?

这会在未提交的水平下工作吗?

谢谢!

//稍后添加

我可以假设两个sql'都是正确的:

1)设置事务隔离级别可重复读取

   IF NOT EXISTS() BEGIN INSERT INTO (...) END
Run Code Online (Sandbox Code Playgroud)

2)设置事务隔离级别可重复读取

insert into Table (columns)
select column1, column2, column3
where not exists (select top 1 1 from Table where something)
Run Code Online (Sandbox Code Playgroud)

sql-server transactions insert exists

7
推荐指数
1
解决办法
4835
查看次数