J'ai besoin d'écrire une procédure stockée T-SQL qui met à jour une ligne dans une table. Si la ligne n'existe pas, insérez-la. Toutes ces étapes enveloppées par une transaction.
Il s'agit d'un système de réservation, il doit donc être atomique et fiable . Il doit retourner vrai si la transaction a été commise et le vol réservé.
Je suis nouveau sur T-SQL et je ne sais pas comment l'utiliser @@rowcount
. C'est ce que j'ai écrit jusqu'à présent. Suis-je sur la bonne route? Je suis sûr que c'est un problème facile pour vous.
-- 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?)