小编Jān*_*nis的帖子

约束检查:TRY/CATCH vs Exists()

我有一个具有独特约束的表:

create table dbo.MyTab
(
    MyTabID int primary key identity,
    SomeValue nvarchar(50)
);
Create Unique Index IX_UQ_SomeValue 
On dbo.MyTab(SomeValue);
Go
Run Code Online (Sandbox Code Playgroud)

哪个代码更适合检查重复项(如果找到重复项,则成功= 0)?

选项1

Declare @someValue nvarchar(50) = 'aaa'
Declare @success bit = 1;
Begin Try 
    Insert Into MyTab(SomeValue) Values ('aaa');
End Try
Begin Catch
    -- lets assume that only constraint errors can happen
    Set @success = 0;
End Catch
Select @success
Run Code Online (Sandbox Code Playgroud)

选项2

Declare @someValue nvarchar(50) = 'aaa'
Declare @success bit = 1;
IF EXISTS (Select 1 From MyTab Where SomeValue …
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2005 sql-server-2008

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

SQL Server 2008 R2等待类型 - 'PREEMPTIVE_OS%'

我在哪里可以找到有关等待类型的文档(SQL Server 2008 R2):

Select * from sys.dm_os_wait_stats  where wait_type like 'PREEMPTIVE_OS%'
Run Code Online (Sandbox Code Playgroud)

例如"PREEMPTIVE_OS_CRYPTIMPORTKEY".msdn中没有记录这样的等待类型.

sql-server sql-server-2008-r2

4
推荐指数
1
解决办法
6517
查看次数