![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 55 Pomógł: 0 Dołączył: 17.09.2006 Ostrzeżenie: (0%) ![]() ![]() |
Ostatnio przesiadłem się na MySQL 5. Od tego czasu zastanawiam się czy korzystać z trigerów czy tylko z procedur składowanych. Pytam między innymi dlatego, że spotkałem się z opinią, że odchodzi się od nich, właśnie na rzecz procedur.
Ja nadal widzę sporo zastosowań dla trigerów, ale nie chciałbym się pakować w rozwiązania bez przyszłości. Poradźcie! -------------------- art of programming
|
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 597 Pomógł: 30 Dołączył: 19.02.2003 Skąd: Tychy Ostrzeżenie: (0%) ![]() ![]() |
Hę? Czy trigger to przypadkiem nie ustawiona procedura składowana na jakąś akcje typu usunięcie / dodanie / edycję? Czy w MySQL może to jakoś inaczej działa? ;>>>
-------------------- Zapraszam na mój php blog, tworzenie stron.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 55 Pomógł: 0 Dołączył: 17.09.2006 Ostrzeżenie: (0%) ![]() ![]() |
Nie wydaje mi się. Do trigera nie wysyłasz żadnych parametrów i nie zwraca żadnego wyniku. Dodatkow sam sprawdza czy zaszło zdarzenie.
-------------------- art of programming
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 597 Pomógł: 30 Dołączył: 19.02.2003 Skąd: Tychy Ostrzeżenie: (0%) ![]() ![]() |
No to mam takie pytanie w jaki sposób chcesz zrealizować takie zadanie:
Mam tabele : wiadomości ( id, tytul, tresc, ilosc_komentarzy ); i teraz chce, aby przy kazdym dodaniu komentarza do wiadomosci ilosc_komentarzy sie aktualizowala bo ja to robie tak, ze tworze procedure skladowana o wartosci zwracanej TRIGGER, nastepnie tworze triggera i podpinam ta funkcje pod tabele wiadomości, przynajmniej tak to dziala w postgresql... mozesz mi napisac jak to chcesz osiagnac w mysql? chcesz np. w php uruchamiac za kazdym razem przy dodaniu komentarza procedure i podawac jako parametr numer wiadomosci ? -------------------- Zapraszam na mój php blog, tworzenie stron.
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 611 Pomógł: 19 Dołączył: 28.02.2005 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Od trigerów raczej sie nie odchodzi... nie wiem gdzie to wyczytałeś, ale jakbym miał za każdym razem gdy zmieniam coś w bazie jeszcze musiał jej mówić żeby zrobiła jakąś procedure to by zaprzeczało mojej szanownej leniwej naturze. Jak napisał przedmówca do trigera wrzucasz procedure i po problemie
![]() Ten post edytował sticker 17.09.2006, 22:08:55 -------------------- |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 55 Pomógł: 0 Dołączył: 17.09.2006 Ostrzeżenie: (0%) ![]() ![]() |
Rozumiem, że w postgres triger to tylko akcja, tak? W MySQL triger sam zawiera kod, który ma wykonać. Przykład z manuala:
Nie da się wykonać kodu trigera bezpośrednio z php. Od trigerów raczej sie nie odchodzi Dzięki za opinię. Poczekam, może ktoś jeszcze się wypowie... -------------------- art of programming
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 28 Pomógł: 0 Dołączył: 7.09.2006 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Od triggerów się nie odchodzi, szczególnie w przypadku MySQL jest nawet odwrotnie - ta baza zaczyna dojrzewać do poziomu prawdziwych baz SQL, gdzie triggery i procedury składowane są od wieków.
![]() To, na ile wykorzystać procedury i triggery, zależy w zasadzie od Ciebie - ile chcesz zrzucić ciężaru na bazę, a ile logiki biznesowej chcesz zostawić w samej aplikacji. W moich zastosowaniach triggery i procedury wspomagają jedynie utrzymanie pełnej spójności i poprawności danych już na poziomie samej bazy (np. poprawność PESELu, jego zgodność z datą urodzin i podobne warunki, które niezależne są od implementacji systemu). Jeśli jednak główne zadania aplikacji to np. zarządzanie dużą ilością danych, a w tym przecież sam engine bazy się specjalizuje, warto najbardziej krytyczne elementy systemu wrzucić do samej bazy. Oczywiście jest pewnie jeszcze setka innych powodów, dla których mniejsza lub większa część logiki biznesowej powinna być w bazie lub jej nie powinno być tam wcale. ![]() -------------------- NotePad++ / Eclipse 3.3 (+PDT+PyDev+WTP) / VS 2005 Standard (+WTL 8.0+WM 2003 SDK/WM 5.0 SDK) / Glassfish / php 5.2.3 / Apache 2.2.x / MySQL 5.0.x / PostgreSQL 8.2.x / cvsd / violin 2.0 / piano 0.7-pre :P
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 923 Pomógł: 9 Dołączył: 25.10.2004 Skąd: Rzeszów - studia / Warszawa - praca Ostrzeżenie: (0%) ![]() ![]() |
Zadaniem triggera obojetnie w jakiej bazie danych jest to samo. Podejmuje okreslona czynnosc czy to jest wywolaine innej procedury czy funkcji czy bezposrenio wywolanie kodu. MySQL strasznie szybko goni ORACLE (mozna to przeczytac odnosnie zmian jakie sa w MySQL 5.1.11 i co bedzie 5.2. Gdzies na forum MySQLa znalazlem juz info o wprowadzniu do bazy nowego jezyka.
Zastanawiam sie gdzie przeczytales cos takiego ze od triggerow sie odchodzi? Przeciez wprowadznie triggerow do DB to wielki krok do przodu. Odnosine triggerow w MySQL jest jeden problem wymagane uprawnienie "super" przynajmniej w tej wersji ktora testowalem, a z tego co mi wiadomo malo firm oferujacych ta baze danych pozwoli sobie na cos takiego. Jesli ktos ma info na ten temat prosze o wypowiedzenie sie. -------------------- |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 55 Pomógł: 0 Dołączył: 17.09.2006 Ostrzeżenie: (0%) ![]() ![]() |
Zastanawiam sie gdzie przeczytales cos takiego ze od triggerow sie odchodzi? Przeciez wprowadznie triggerow do DB to wielki krok do przodu. Odnosine triggerow w MySQL jest jeden problem wymagane uprawnienie "super" przynajmniej w tej wersji ktora testowalem, a z tego co mi wiadomo malo firm oferujacych ta baze danych pozwoli sobie na cos takiego. Jesli ktos ma info na ten temat prosze o wypowiedzenie sie. O odchodzeniu od trigerów powiedział mi admin z firmy hostującej, kiedy zacząłem go cisnąć o jakieś narzędzie do dodawania trigerów (bo na status superusera nie mam co liczyć) ![]() A ponieważ wydało mi się to dziwne, to wolałem zapytać. Jak widać dobrze zrobiłem ![]() -------------------- art of programming
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 174 Pomógł: 1 Dołączył: 19.02.2004 Ostrzeżenie: (10%) ![]() ![]() |
tak na marginesie, pozdrów tego Admina, musi byc to extra Ziom
![]() |
|
|
![]()
Post
#11
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 923 Pomógł: 9 Dołączył: 25.10.2004 Skąd: Rzeszów - studia / Warszawa - praca Ostrzeżenie: (0%) ![]() ![]() |
Spoko. Podobaja mi sie tacy ludzie, jesli cos odbiega od standardu to lepiej powiedziec ze sie odchodzi od takiego wykorzystania na koszt innego.
Nawet na oficjalnym forum MySQLa narzekaja na to wymogl uprawnienia super - miejmy nadzieje ze to zostanie z kolejnymi wersjami poprawione. Bo bedzie funkcjonalnasc ktora nie bedzie wykorzystywana. -------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 27.06.2025 - 03:18 |