Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Trigger update
pinio27
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 1.09.2011

Ostrzeżenie: (0%)
-----


Ktoś ma może pomysł jak z dwóch tych trigger'ów (insert i delete) zrobić jeden trigger na update? Jakoś sensownie to połączyć...

  1. CREATE OR REPLACE TRIGGER tr_add_zawodnik before
  2. INSERT ON zawodnicy
  3. referencing new AS new_row
  4. FOR each row
  5. begin
  6. UPDATE pleczawodnicy
  7. SET suma=((SELECT DISTINCT suma FROM pleczawodnicy p , zawodnicy z
  8. WHERE p.Plec_Zawodnikow=new_row.plec AND p.Numer_Klubu=new_row.nrklubu AND z.nrklubu=p.Numer_Klubu)+1)
  9. WHERE pleczawodnicy.Numer_Klubu=new_row.nrklubu AND pleczawodnicy.Plec_Zawodnikow=new_row.plec;
  10. end;
  11.  
  12.  
  13. CREATE OR REPLACE TRIGGER tr_del_zawodnik before
  14. DELETE ON zawodnicy
  15. referencing old AS old_row
  16. FOR each row
  17. begin
  18. UPDATE pleczawodnicy
  19. SET suma=((SELECT DISTINCT suma FROM pleczawodnicy p , zawodnicy z
  20. WHERE p.Plec_Zawodnikow=old_row.plec AND p.Numer_Klubu=old_row.nrklubu AND z.nrklubu=p.Numer_Klubu)-1)
  21. WHERE pleczawodnicy.Numer_Klubu=old_row.nrklubu AND pleczawodnicy.Plec_Zawodnikow=old_row.plec;
  22. end;


Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
Fifi209
post
Post #2





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Nie można stworzyć triggera dla dwóch akcji na raz.


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
pinio27
post
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 1.09.2011

Ostrzeżenie: (0%)
-----


Może inaczej...jak połączyć selecta z inserta z selectem z delete aby wyszedł update?

Dokładnie chodzi o tą część kodu:
  1. INSERT
  2. SET suma=((SELECT DISTINCT suma FROM pleczawodnicy p , zawodnicy z
  3. WHERE p.Plec_Zawodnikow=new_row.plec AND p.Numer_Klubu=new_row.nrklubu AND z.nrklubu=p.Numer_Klubu)+1)
  4. WHERE pleczawodnicy.Numer_Klubu=new_row.nrklubu AND pleczawodnicy.Plec_Zawodnikow=new_row.plec;
  5.  
  6. DELETE
  7. SET suma=((SELECT DISTINCT suma FROM pleczawodnicy p , zawodnicy z
  8. WHERE p.Plec_Zawodnikow=old_row.plec AND p.Numer_Klubu=old_row.nrklubu AND z.nrklubu=p.Numer_Klubu)-1)
  9. WHERE pleczawodnicy.Numer_Klubu=old_row.nrklubu AND pleczawodnicy.Plec_Zawodnikow=old_row.plec;


Czyli z dwóch tych selectów zrobić jeden...żeby dodwał +1 i odejmował -1.

W ogóle to zadanie polegało na tym, żeby napisać trzy triggery (insert, delete, update), które polegają na tym, że na przykład dodaje się nowego zawodnika do tabeli zawodnicy co powoduje, że inna tabela automatycznie się aktualizuje, zlicza ile jest dokładnie zawodników w danym klubie.

Z tym, że nie mogę się uporać z tym trzecim triggerem na update...który ponoć można stworzyć łącząc jakoś sensownie ze sobą selecta z inserta z selectem z delete.
Go to the top of the page
+Quote Post
Fifi209
post
Post #4





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Trzymasz informację o w osobnej tabeli ilu masz zawodników? Przecież to czyste szaleństwo.

Mógłbyś pokazać strukturę tej bazy?


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
pinio27
post
Post #5





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 1.09.2011

Ostrzeżenie: (0%)
-----


Chodzi o to, że po dodaniu jakiegoś nowego zawodnika do tabeli zawodnicy ma się w tabeli pleczawodnicy zliczać (suma) ilość zawodników w danym klubie.


Cała baza wygląda tak:





Go to the top of the page
+Quote Post
Fifi209
post
Post #6





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Ale ta dodatkowa tabela ze zliczonymi jest niepotrzebna, przecież takie rzeczy się z JOIN'ami robi


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 06:31