T-SQL 中带有存在性检查的原子行插入
您的要求是开发一个以原子方式更新行的 T-SQL 存储过程在一个表中。如果该行不存在,则应将其插入事务中,以确保可靠性和原子性。您需要有效地利用 @@rowcount 来确定该行是否已存在。
建议的实现
这是代码的修改版本,其中包含建议的实现方法:
BEGIN TRANSACTION; IF EXISTS (SELECT 1 FROM Bookings WHERE FlightId = @Id) BEGIN UPDATE Bookings SET TicketsBooked = TicketsBooked + @TicketsToBook WHERE FlightId = @Id AND TicketsMax >= (TicketsBooked + @TicketsToBook); END ELSE BEGIN INSERT INTO Bookings ... (omitted); END /* Remaining transaction logic */ COMMIT TRANSACTION; IF @@ERROR = 0 BEGIN RETURN TRUE; -- Return success if no errors occurred END ELSE BEGIN RETURN FALSE; -- Return failure in case of errors END
解释:
以上是如何使用 @@rowcount 在 T-SQL 中自动插入或更新行?的详细内容。更多信息请关注PHP中文网其他相关文章!