检查是否有行存在,否则插入
我需要写一个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?)
225
3
我假设每个航班都有一个单行?如果是的话。
我假设我说的是,因为你的做法可能会超额预订航班,因为它将在最多有10张票而你要预订20张时插入新的一行。
这是我最近才不得不做的事情。
你可以使用合并功能来实现。否则你可以这样做。