Zaczynam bawić się w bazy danych i mam taką bazę:
Przedstawiciel
id_przedstawiciel int(3) Primary Key
Nazwisko varchar (15)
Region
id_region int(3) Primary Key
Nazwa varchar (15)
Przedstawiciel_id_przedstawiciel (foreign key)
Klient
id_klient int(3) Primary Key
Firma varchar (15)
Przedstawiciel_id_przedstawiciel(foreign key)
Region_id_region (foreign key)
Chciałbym, żeby po wprowadzeniu zmian w tabeli Region automatycznie zmiany rejestrowane były w tabeli Klient, więc napisałem trigger:
DELIMITER //
create trigger region_trigger after update on Region
for each row begin
if NEW.Przedstawiciel_id_przedstawiciel<> OLD.Przedstawiciel_id_przedstawiciel THEN
update Klient set Przedstawiciel_id_przedstawiciel = NEW.Przedstawiciel_id_przedstawiciel
end if;
end//
Robię update tabeli region (zmieniam wartość Przedstawiciel_id_przedstawiciel z '1' na '3'):
update Region
Set Przedstawiciel_id_przedstawiciel = '3'
Where (id_region = 1);
Wszystkie pola "Przedstawiciel_id_przedstawiciel" (niezależnie od regionu) w tabeli Klient zmieniane są na wartość = 3. Dlaczego nie jest zmieniane tylko pole z warunkiem id_region = 1?
Będę wdzięczny za pomoc, bo cały wieczór się z tym męczę.