Trigger na podstawie update

0

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
0

carID masz przecież w inserted i deleted. Trigger update działa w ten sposób, że w deleted masz rekord przed zmianą, a w inserted masz rekord po zmianie.

Teraz już chyba sobie poradzisz z poprawieniem triggera?!

0

Poprawione, dzięki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1