Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Trigger after Update
Forum PHP.pl > Forum > Przedszkole
pabito
Witam
Chciałbym stworzyć trigger który po zmianie kolumny A w danej tabeli wykona update na tej samej tabeli w kolumnie B.
Zrobiłem coś takiego, ale chyba dochodzi do zapętlenia, gdy chce wykonać update w kolumnie area wyskakuje mi błąd 1442
Can't update table 'ddis' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.

  1. DELIMITER $$
  2.  
  3. USE `moja_baza`$$
  4.  
  5. DROP TRIGGER /*!50032 IF EXISTS */ `set_identifier_in_ddis`$$
  6.  
  7. CREATE
  8. TRIGGER `set_identifier_in_ddis` AFTER UPDATE ON `ddis`
  9. FOR EACH ROW BEGIN
  10. UPDATE ddis SET identifier=CONCAT('0',`area`,subscriber);
  11. END;
  12. $$
  13.  
  14. DELIMITER ;
  15.  
mmmmmmm
  1. CREATE
  2.  
  3. TRIGGER `set_identifier_in_ddis` AFTER UPDATE ON `ddis`
  4. FOR EACH ROW BEGIN
  5. NEW.identifier=CONCAT('0',NEW.`area`,NEW.subscriber);
  6. END;

Ale nie wiem, czy w AFTER przejdzie
styryl
Trigger w mysql nie może manipulować na tabeli do której jest przypisany
pabito
Problem rozwiązany.
Tak więc trigger może manipulować na tabeli do której jest przypisany. I tak jak widać użyłem BEFORE

  1.  
  2. CREATE
  3. TRIGGER `update_identifier_in_dids` BEFORE UPDATE ON `dids`
  4. FOR EACH ROW BEGIN
  5. SET NEW.identifier=CONCAT('0',NEW.area, NEW.subscriber);
  6. END;
  7. $$
styryl
To może uściślę, to co robiłeś na początku to było manipulowanie na tabeli (robiłeś UPDATE) i jak słusznie zauważyłeś doprowadziłeś do zapętlenia. To co zrobiłeś tutaj:

  1. CREATE
  2. TRIGGER `update_identifier_in_dids` BEFORE UPDATE ON `dids`
  3. FOR EACH ROW BEGIN
  4. SET NEW.identifier=CONCAT('0',NEW.area, NEW.subscriber);
  5. END;
  6. $$


Jest dostępem do nowego obiektu, nie manipulowałeś tabelą tylko nowym obiektem.

pabito
jest dokładnie tak jak mówisz smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.