Мені потрібно написати процедуру, що зберігається в T-SQL, яка оновлює рядок у таблиці. Якщо рядок не існує, вставте його. Всі ці кроки завершені транзакцією.
Це для системи бронювання, тому вона повинна бути атомною та надійною . Він повинен повернути істину, якщо транзакція була здійснена і рейс забронювали.
Я новачок у 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?)