Avatar
jozifek95
Člen
Avatar
jozifek95:

Zdravím,
mám takový menší problém s triggerama. Mám trigger který se má spustit po přidání hodnoty do tabulky. Trigger má upravit hodnotu sloupku subPages + 1 u rodičovského řádku.

DELIMITER //
CREATE TRIGGER `update_pages_after_insert` AFTER INSERT ON `pages`
 FOR EACH ROW BEGIN
  UPDATE pages SET subPages = subPages + 1 WHERE id = NEW.parentId;
END
//
DELIMITER ;

Po spuštění příkazu pro vložení řádku:

INSERT INTO `pages` (`name`, `url`, `parentId`, `type`, `active`, `position`) VALUES ('test 10','test_10',1,'topics',1,3)

mi vyskočí chyba:
#1442 - Can't update table 'pages' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.

Nevíte někdo kde může být problém? co jsem hledal na netu tak tam s touto chybou řešili hlavně to, že upravovali právě vložený řádek. Předem díky za pomoc

 
Odpovědět 7.7.2014 14:09
Avatar
Ori
Člen
Avatar
Odpovídá na jozifek95
Ori:

netuším kde by mohla byť chyba, skús sem postnúť aj štruktúru DB

 
Nahoru Odpovědět 8.7.2014 8:23
Avatar
Findthee
Člen
Avatar
Odpovídá na jozifek95
Findthee:

Nejsem si jistý, ale nemohlo by to být tím, že nemůžeš updatnout tabulku, do které jsi právě zapsal, protože insert si ji lockne? Možná bys mohl zkusit zaměnit AFTER za BEFORE? :)

 
Nahoru Odpovědět 8.7.2014 19:07
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.