trigger: 1: CREATE OR REPLACE FUNCTION UpdateLastRentalDate() RETURNS… — Database 4031 — TG.ME

trigger: 1: CREATE OR REPLACE FUNCTION UpdateLastRentalDate() RETURNS TRIGGER AS $$ BEGIN UPDATE customer SET last_rental_date = NEW.rental_date WHERE customer_id = NEW.customer_id; RETURN NEW; END; $$ LANGUAGE plpgsql; CREATE TRIGGER UpdateCustomerLastRentalDate AFTER INSERT ON rental FOR EACH ROW EXECUTE FUNCTION UpdateLastRentalDate(); 2: CREATE OR REPLACE FUNCTION CheckInventoryAvailability() RETURNS TRIGGER AS $$ BEGIN IF EXISTS ( SELECT 1 FROM rental WHERE inventory_id = NEW.inventory_id AND return_date IS NULL ) THEN RAISE EXCEPTION 'This inventory item is already rented out and has not been returned.'; END IF; RETURN NEW; END; $$ LANGUAGE plpgsql; CREATE TRIGGER PreventDoubleRental BEFORE INSERT ON rental FOR EACH ROW EXECUTE FUNCTION CheckInventoryAvailability(); 3: -- First, create the trigger function CREATE OR REPLACE FUNCTION CheckFilmReleaseYear() RETURNS TRIGGER AS $$ BEGIN -- Check if the release year is less than 1900 IF NEW.release_year < 1900 THEN -- Raise an exception to prevent insertion RAISE EXCEPTION 'Release year cannot be less than 1900.'; END IF; RETURN NEW; END; $$ LANGUAGE plpgsql; -- Now, create the trigger to call the function before inserting a new film CREATE TRIGGER ValidateReleaseYear BEFORE INSERT ON film FOR EACH ROW EXECUTE FUNCTION CheckFilmReleaseYear();

January 5, 2025 261 3