Bir tablodaki bir satırı güncelleştiren bir T-SQL saklı yordamı yazmak gerekiyor. Satır yoksa ekleyin. Tüm bu adımlar bir işlem tarafından sarılır.
Bu bir rezervasyon sistemi içindir, bu yüzden atomik ve güvenilir olmalıdır . İşlem yapıldıysa ve uçuş rezervasyonu yapıldıysa doğru dönmelidir.
T-SQL'de yeniyim ve nasıl kullanılacağından emin değilim @@rowcount
. Şimdiye kadar yazdığım bu. Doğru yolda mıyım? Eminim senin için kolay bir problemdir.
-- 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?)