Tôi cần phải viết một thủ tục lưu sẵn T-SQL cập nhật một hàng trong bảng. Nếu hàng không tồn tại, chèn nó. Tất cả các bước này được bao bọc bởi một giao dịch.
Đây là một hệ thống đặt phòng, vì vậy nó phải là nguyên tử và đáng tin cậy . Nó phải trả lại đúng nếu giao dịch được cam kết và chuyến bay đã đặt.
Tôi chưa quen với T-SQL và không chắc chắn về cách sử dụng @@rowcount
. Đây là những gì tôi đã viết cho đến bây giờ. Tôi có đang đi đúng đường không? Tôi chắc chắn là một vấn đề dễ dàng cho bạn.
-- 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?)