テーブルの行を更新する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?)