Mój trigger polega na tym, że w momencie zmiany stan wypożyczenia samochodu, ulega zmianie sam status samochodu. W tym konkretnym przypadku warunek powinien wyglądać następująco: zmień status samochodu na dostępny (enum = 0), jeśli nie ma żadnych wypożyczeń, które mają stan aktywny (enum = 1) i są powiązane z tym samochodem. Problem w tym, że nie jestem w stanie pobrać wartości carID z edytowanego wypożyczenia, jako że dostępne są tylko tabele "Inserted" oraz "Deleted". Na ten moment warunek jest wadliwy: nie bierze on ID pojedynczego, konkretnego samochodu, którego wypożyczenie zostało wyedytowane, a wystarczy, że na liście wszystkich wypożyczeń napotka chociaż jedno aktywne. Zatem statusy samochodów edytują się dopiero wtedy, jak nie ma już ani jednego dostępnego wypożyczenia. Ma ktoś może pomysł, jak to obejść? Prosiłbym o pomoc.
Kod wygląda tak:
if NOT EXISTS
(
select * from Rentals R
inner join CarRentals.Cars as C ON R.CarID = C.ID
where R.CarID = C.ID and R.State = 1 -- 1 - active
)
BEGIN
UPDATE C SET C.Status = 0 -- available
FROM CarRentals.Cars AS C
JOIN CarRentals.Rentals AS R ON R.CarID = C.ID
R.CarID = C.ID
END
END