相关疑难解决方法(0)

单个SQL Server语句是原子的还是一致的?

是SQL Server中的声明ACID吗?

我是什么意思

给定一个未包装在BEGIN TRANSACTION/ COMMIT TRANSACTION中的T-SQL语句是该语句的操作:

  • 原子:要么执行所有数据修改,要么不执行任何数据修改.
  • 一致:完成后,事务必须使所有数据保持一致状态.
  • 隔离:并发事务所做的修改必须与任何其他并发事务所做的修改隔离.
  • 持久:交易完成后,其效果将永久存在于系统中.

我问的原因

我在实时系统中有一个声明似乎违反了查询规则.

实际上我的T-SQL语句是:

--If there are any slots available, 
--then find the earliest unbooked transaction and mark it booked
UPDATE Transactions
SET Booked = 1
WHERE TransactionID = (
   SELECT TOP 1 TransactionID
   FROM Slots
      INNER JOIN Transactions t2
      ON Slots.SlotDate = t2.TransactionDate
   WHERE t2.Booked = 0 --only book it if it's currently unbooked
   AND Slots.Available > 0 --only book …
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2008-r2

67
推荐指数
1
解决办法
2万
查看次数

标签 统计

sql-server ×1

sql-server-2008-r2 ×1