Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem z Trigger'em
Niktoś
post
Post #1





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


Nie za wiele działałem z triggerami i mam problem.
Ułożyłem takiego triggera:
  1. CREATE TRIGGER tr_UpdTabele
  2. ON Platnosci
  3. AFTER UPDATE
  4. AS
  5.  
  6. IF NOT UPDATE(zaplacono)
  7. RETURN
  8.  
  9. IF EXISTS (SELECT *
  10. FROM inserted a
  11. JOIN deleted b ON a.IdPlat=b.IdPlat
  12. WHERE b.zaplacono <> 1 AND
  13. a.zaplacono = 1)
  14. BEGIN
  15. DECLARE @NazwaSklepu nvarchar(50);
  16. DECLARE @NazProduktu nvarchar(50);
  17. Declare @TypSklepu nvarchar(50);
  18. Declare @Suma int;
  19.  
  20.  
  21. SET @TypSklepu=(SELECT t.TypSklepu
  22. FROM inserted a
  23. JOIN deleted b ON a.IdPlat=b.IdPlat JOIN Finanse t ON t.IDkl=a.IdKl AND t.IdKlient=a.numtKlienta
  24. WHERE b.zaplacono <> 1 AND
  25. a.zaplacono = 1)
  26. SET @NazProduktu=(SELECT t.NazwaTowaru
  27. FROM inserted a
  28. JOIN deleted b ON a.IdPlat=b.IdPlat JOIN Finanse t ON t.IDkl=a.IdKl AND t.IdKlient=a.numtKlienta
  29. WHERE b.zaplacono <> 1 AND
  30. a.zaplacono = 1)
  31. SET @Suma=( SELECT SUM(t.Ilosc) FROM Finanse t JOIN inserted f ON t.IDkl=f.IdKl AND t.IdKlient=f.numtKlienta WHERE t.NazwaTowaru=@NazProduktu AND f.zaplacono=1 GROUP BY t.NazwaTowaru)
  32. UPDATE [@TypSklepu] SET iloscSprzedanych=iloscSprzedanych+@Suma WHERE NazwaProduktu=@NazProduktu;
  33. END
  34. go


Trigger ma za zadanie zrobić update na danej tabli ,kiedy zostaje wykonany update na tabeli gdzie ustawiony jest ten triger.
Po dokonaniu płatności do tabeli płatności updatowana jest kolumna zaplacono(ustawiony status).
tabela jest powiązana z tabelą finanse ,gdzie są nazwy sklepu,przedmiotu, ilość zakupionych produktów,a ta zkolei powiązana jest z tabelą klient(to chyba mało ważne).Ważne są te dwie tabele finanse i płatności.
Po updatowaniu chciałem użyć wyzwalacza który by zliczył ilość wszystkich zakupionych przedmiotów o konkretnej nazwie ze statusem zakupiono i updatować całkiem inną /inne tabele [@TypSklepu].Użyłem parametru bo przedmioty mogą znajdować się w różnych tabelach o tej samej strukturze.
Tymczasem wyskoczyło mi internal server error (500).

Nie wiem czy w ogóle mogę tu użyć triggera. Wygląda to tak- dokonuje zakupu przykładowo rower,rolki,piłka zapisują się w tabeli finanse zaś wszelkie dane adresowe do tabeli klient, w osobnej tabeli płatności zapisuje się status.Te trzy tabele są w mniejszym lub większym stopniu ze sobą powiązane. Teraz dokonuję zapłaty za przedmiot i updatuje tabele płatności i bezpośredni w tabeli finanse dla każdego przedmiotu muszę zliczyć/sumować liczbę wszystkich które zostały zakupione.Nie mam pojęcia jak to fajnie rozwiązać, dlatego proszę o radę.Czy triger do tego się nadaje?

Ten post edytował Niktoś 26.05.2012, 22:01:05
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 25.08.2025 - 13:36