Devo scrivere una procedura memorizzata T-SQL che aggiorna una riga in una tabella. Se la riga non esiste, inserirla. Tutti questi passaggi sono racchiusi in una transazione.
Questo è per un sistema di prenotazione, quindi deve essere atomico e affidabile . Deve restituire true se la transazione è stata impegnata e il volo prenotato.
Sono nuovo di T-SQL e non sono sicuro di come utilizzarlo @@rowcount
. Questo è quello che ho scritto fino ad ora. Sono sulla strada giusta? Sono sicuro che sia un problema facile per te.
-- 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?)