我开始学习可空类型并遇到以下行为.
在尝试nullable int时,我看到比较运算符给了我意想不到的结果.例如,在我的下面的代码中,我得到的输出是"两个和1相等".请注意,它也不会打印"null".
int? a = null;
int? b = 1;
if (a < b)
Console.WriteLine("{0} is bigger than {1}", b, a);
else if (a > b)
Console.WriteLine("{0} is bigger than {1}", a, b);
else
Console.WriteLine("both {0} and {1} are equal", a, b);
Run Code Online (Sandbox Code Playgroud)
我希望任何非负整数都大于null,我错过了什么吗?
在事务隔离级别“可重复读取”上打开连接后,我的应用程序的一部分根据业务逻辑更新表。在极少数情况下,如果此操作与应用程序的另一部分同时打开不同的连接并尝试将同一记录重置为其默认值。我收到以下错误
Msg 1205, Level 13, State 45, Line 7
Transaction (Process ID 60) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.
Run Code Online (Sandbox Code Playgroud)
我想我可以使用以下示例重现该问题。
1.
create table Accounts
(
id int identity(1,1),
Name varchar(50),
Amount decimal
)
Run Code Online (Sandbox Code Playgroud)
2.
insert into Accounts (Name,Amount) values ('ABC',5000)
insert into Accounts (Name,Amount) values ('WXY',4000)
insert into Accounts (Name,Amount) values ('XYZ',4500)
Run Code Online (Sandbox Code Playgroud)
3.
启动一个隔离级别为 REPEATABLE READ 的长事务
Set transaction isolation level REPEATABLE READ
begin tran
declare @var …Run Code Online (Sandbox Code Playgroud)