Анонимен потребител
Проверете дали съществува ред, в противен случай вмъкнете
Трябва да напиша процедура на T-SQL, която актуализира ред в таблица. Ако редът не съществува, го вмъква. Всички тези стъпки се извършват чрез транзакция.
Това е за система за резервации, така че трябва да е атомна и надеждна. Тя трябва да върне true, ако транзакцията е извършена и полетът е резервиран.
Аз съм начинаещ в T-SQL и не съм сигурен как да използвам @@rowcount
. Това е, което написах досега. На прав път ли съм? Сигурен съм, че за вас това е лесен проблем.
-- 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?)
225
3
Предполагам, че има един ред за всеки полет? Ако е така:
Предполагам, че това, което казах, може да доведе до свръхрезервиране на полет, тъй като ще се вмъкне нов ред, когато има максимум 10 билета, а вие резервирате 20.
Това е нещо, което ми се наложи да направя съвсем наскоро:
Можете да използвате функцията Merge, за да постигнете. В противен случай можете да направите: