jak poprawić trigger w mysql

0

Napisałem taki trigger:

create trigger trigtowary 
after insert on tabela2 for each row
set @newid = NEW.id;
begin 
update tabela1 a set ile_towarow=
ile_towarow+1
where a.id=@newid;
end;

Mam dwie tabele: tabela1 i tabela2. I teraz jak wstawiam do tabeli2

insert into tabela_b values("id02","ogorek",4,3.20);

to chciałbym pole ile_towarow w tabeli1 zwiekszyło sie o 1.
Piszę w MySql Workbenchu. Trigger się dodaje, ale wywołanie inserta nie powoduje zmiany komórki ile_towarow.
Samodzielna linijka:

 UPDATE tabela1 SET ile_towarow=
ile_towarow+1
WHERE id="id02";

działa. Ale triger z tą linijką się nie odpala.
Co robię źle?

0

Podejrzewam, że to z powodu tego "SET @newid = NEW.id" umieść to w blogu BEGIN END albo w ogóle pozbądź się tej zmiennej.

0

@maszynaz - przeklejam na prośbę:

CREATE TRIGGER `trigtab1` AFTER INSERT ON `tabela2`
FOR EACH ROW 
BEGIN
SET @id = NEW.id;
UPDATE tabela1 a SET counter = counter + 1 WHERE a.id = @id;
END;
0

Domyślam się, że w tabela1 klucz jest na polu id... Spróbuj zatem zamiast UPDATE zrobić REPLACE. I wywal ten parametr... Czyli:

FOR EACH ROW
BEGIN
REPLACE tabela1 SET counter = counter + 1 WHERE id = NEW.id;
END;

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