Tôi cần viết một thủ tục lưu trữ T-SQL để cập nhật một hàng trong bảng. Nếu hàng không tồn tại, hãy chèn nó vào. Tất cả các bước này được bao bọc bởi một giao dịch.Kiểm tra xem có tồn tại một hàng hay không, nếu không hãy chèn
Đây là hệ thống đặt chỗ, vì vậy, phải là nguyên tử và đáng tin cậy. Nó phải trả về true nếu giao dịch đã được cam kết và chuyến bay đã đặt.
Tôi là mới đối 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 đang đi đúng đường phải 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?)
có thể trùng lặp với [Solu tions cho INSERT HOẶC CẬP NHẬT trên SQL Server] (http://stackoverflow.com/questions/108403/solutions-for-insert-or-update-on-sql-server) –
câu hỏi liên quan - https://stackoverflow.com/ câu hỏi/21889843/unique-constraint-vs-checking-before-insert – Steam