Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: automatyczne usuwanie za pomocą trigger'a
Forum PHP.pl > Forum > Bazy danych > MySQL
Gligamesh
Witam

chodzi mi o automatyczne usuwanie dzieci gdy usunę rodzica, stworzyłem sobie coś takiego:
  1. DELIMITER //
  2. CREATE TRIGGER `testowy` BEFORE DELETE ON `galleryCat`
  3. FOR EACH ROW BEGIN
  4. DELETE FROM `galleryImage` WHERE `galleryImage`.`idCat` = `galleryCat`.`id`;
  5. END
  6. //
  7. DELIMITER ;


no ale nie działa, prawdę mówiąc nie wiem jak to ugryźć (raczkuję). Jeśli ktoś ma jakiś fajny tutorial pod ręką to też nie pogardzę
Crozin
A dlaczego nie założysz po prostu klucza obcego (galleryCat.idCat -> galleryCat.id) z opcją ON DELETE CASCADE? http://dev.mysql.com/doc/refman/5.1/en/inn...onstraints.html
Gligamesh
bo to wymaga innoDB które jest wolniejsze. Nie tworze ważnych aplikacji w których priorytetem jest integralność danych.
Crozin
Cytat
bo to wymaga innoDB które jest wolniejsze.
1. Tak, przy zwykłych zapytaniach SELECT jest nieco wolniejsze, ale przy bardziej rozbudowanych już niekoniecznie.
2. InnoDB to nie tylko integralność danych.
3. Z wyzwalaczami miałem raczej mało do czynienia, ale raczej powinno to być coś w stylu:
  1. WHERE OLD.id = galleryImage.idCat;
Gligamesh
wiem, innoDB w niektórych operacjach jest szybsze zwłaszcza przy wielu wątkach, ale jak pisałem to nie mój przypadek.

tego brakowało, dzięki 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.