Ich muss eine gespeicherte T-SQL-Prozedur schreiben, die eine Zeile in einer Tabelle aktualisiert. Wenn die Zeile nicht vorhanden ist, fügen Sie sie ein. All diese Schritte werden von einer Transaktion umschlossen.
Dies ist für ein Buchungssystem, daher muss es atomar und zuverlässig sein . Es muss true zurückgeben, wenn die Transaktion festgeschrieben und der Flug gebucht wurde.
Ich bin neu in T-SQL und nicht sicher, wie ich es verwenden soll @@rowcount
. Das habe ich bis jetzt geschrieben. Bin ich auf dem richtigen Weg? Ich bin sicher, das ist ein leichtes Problem für Sie.
-- 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?)