Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Obsługa wyzwalaczy na darmowych hostingach
Forum PHP.pl > Forum > Bazy danych
WebCM
W systemie CMS używam wyzwalaczy (triggers). Niestety 2 testerów zgłosiło problem, że skrypt nie chce zainstalować się. Powodem jest brak obsługa wyzwalaczy. U pierwszego - starsza wersja MySQL, u drugiego - brak uprawnień.

Aby dodać wyzwalacz w MySQL 5, trzeba mieć status SUPER PRIVILEGE.

Aktualnie używam ich do:
  • usuwania komentarzy podczas usuwania artykułów, plików, sond, kont użytkowników, itd.
  • usuwania rekordów z tabeli zawierającej pełną treść artykułu lub nowości, jeśli jest usuwany(a) - operacji nie stosuję dla pozostałych typów danych, np. linków, plików i grafiki
  • usuwania wpisów z tabeli pollvotes podczas usuwania kont użytkowników
Być może potem znajdą się nowe zastosowania wyzwalaczy, które ułatwią pracę i oszczędzą operacji w PHP, ale chcę, aby CMS działał bez zarzutów na darmowych hostingach. Alternatywą jest jeszcze baza SQLite (być może też nie wszędzie aktywna), lecz MySQL jest bardziej znany.

Czy używać wyzwalaczy? Czy na darmowych hostingach są wyłączane? W MySQL 5.1 ten problem ponoć nie istnieje. Może lepiej poczekać i nie przejmować się?

PS. CMS oprócz MySQL obsługuje SQLite, w którym raczej nie ma problemów z niedostępnością triggerów.
phpion
Hmmm czy przypadkiem opisane przez Ciebie przypadki nie powinny być realizowane przez więzy integralności czyli po prostu reguły dla kluczy obcych (ON DELETE CASCADE)? Poza tym: triggery w MySQL to jedna wielka kupa...

PS: w pytaniu "Czy używać wyzwalaczy (przeczytaj w wątku, po co):" nie bardzo czaję sens odpowiedzi "TAK - alternatywą jest jeszcze SQLite". SQLite alternatywą dla triggerów?
WebCM
W SQLite raczej nie ma problemów z niedostępnością triggerów, więc ewentualnie przy instalacji można wybrać ten silnik bazy danych. Za pomocą wyzwalaczy można rozwiązać wiele problemów, więc może lepiej poczekać, aż na hostingach pojawi się MySQL 5.1?

Klucze obce są tylko w typie tabel InnoDB, który admini też lubią wyłączać ze względu na duże obciążenie serwera.
phpion
Osobiście nigdy nie spotkałem się z blokadą InnoDB...

Jeżeli chodzi o wybór bazy to celuję w PostgreSQL* - większe możliwości, procedury, triggery itd itd, ponadto nie muszę wybierać między kaskadowym usuwaniem (InnoDB) a wyszukiwaniem pełnotekstowym (MyISAM).

* ale ta baza na darmowym hostingu to... hmmm... chyba nie ma takich cudów smile.gif
misiek172
Akurat w SQLite jest ograniczona możliwość używania triggerów.

Triggery nie są, aż tak bardzo potrzebne, lepiej nie które rzeczy według mnie wykonywać PHP.
Słyszałem ze PostgreSQL to potężna maszyna, lecz jeszcze się z nią nie zapoznałem, ponieważ bardzo mało serwerów ją obsługuje, nawet mój Business Server na home.pl nie ma PostgreSQL.
Riklaunim
Czy jakiś powszechnie stosowany CMS, czy skrypt forum używa triggerów? raczej nie. Nie kombinuj z kodem, bo im bardziej kombinujesz tym dłużej go robisz, jest więcej okazji do błędu, a efekt dla użytkownika ten sam.
AxZx
ja zamiast wyzwalaczy po stronie bazy stosuję wyzwalacze w aplikacji, a konkretnie robi to za mnie Symfony - wystarczy odpowiednio to skonfigurować (uzupełnić plik schema.yml).
podczas gdy Ty dodajesz kolejną tabelę powiązaną z tabelą profil musisz wprowadzać zmiany w wyzwalaczach - ja już nic więcej nie muszę robić:)
phpion
Cytat(AxZx @ 31.12.2008, 02:24:56 ) *
podczas gdy Ty dodajesz kolejną tabelę powiązaną z tabelą profil musisz wprowadzać zmiany w wyzwalaczach - ja już nic więcej nie muszę robić:)

Nic poza symony propel:build-* smile.gif

Korzystanie z triggerów w skryptach masówkach może nie być najlepszym wyjściem, natomiast przy pisaniu dedykowanego oprogramowania jest (moim zdaniem) jak najbardziej wskazane i pożyteczne.
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.