检查是否存在行,否则插入

我需要编写一个T-SQL存储过程来更新表中的一行。如果该行不存在,则将其插入。所有这些步骤都由事务包装。


这是用于预订系统的,因此它必须是原子性和可靠的。如果已提交交易并预订了航班,则必须返回true。


我是T-SQL的新手,不确定如何使用@@rowcount。这就是我到目前为止所写的。我在正确的道路上吗?我相信这对您来说是一个简单的问题。


-- BEGIN TRANSACTION (HOW TO DO?)


UPDATE Bookings

 SET TicketsBooked = TicketsBooked + @TicketsToBook

 WHERE FlightId = @Id AND TicketsMax < (TicketsBooked + @TicketsToBook)


-- Here I need to insert only if the row doesn't exists.

-- If the row exists but the condition TicketsMax is violated, I must not insert 

-- the row and return FALSE


IF @@ROWCOUNT = 0 

BEGIN


 INSERT INTO Bookings ... (omitted)


END


-- END TRANSACTION (HOW TO DO?)


-- Return TRUE (How to do?)


BIG阳
浏览 587回答 3
3回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

SQL Server