MySQL - problem z trigerrem

0

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ę.

0

Takiego grochu z kapustą to ja jeszcze nie widziałam.
Zakładając, że jeden przedstawiciel może mieć kilka regionów, a region tylko jednego przedstawiciela to jeszcze te dwie pierwsze tabele będą ok. Ale jak do klienta masz przywiązany region, który jest powiązany z przedstawicielem, to po co ty tam tą kolumnę Przedstawiciel_id_przedstawiciel(foreign key) wcisnąłeś i kombinujesz z triggerami?

Ty najpierw podstawy opanuj, a później wyzwalacze

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