Ułożyłem takiego triggera:
CREATE TRIGGER tr_UpdTabele ON Platnosci AFTER UPDATE AS IF NOT UPDATE(zaplacono) RETURN IF EXISTS (SELECT * FROM inserted a JOIN deleted b ON a.IdPlat=b.IdPlat WHERE b.zaplacono <> 1 AND a.zaplacono = 1) BEGIN DECLARE @NazwaSklepu nvarchar(50); DECLARE @NazProduktu nvarchar(50); Declare @TypSklepu nvarchar(50); Declare @Suma int; SET @TypSklepu=(SELECT t.TypSklepu FROM inserted a JOIN deleted b ON a.IdPlat=b.IdPlat JOIN Finanse t ON t.IDkl=a.IdKl AND t.IdKlient=a.numtKlienta WHERE b.zaplacono <> 1 AND a.zaplacono = 1) SET @NazProduktu=(SELECT t.NazwaTowaru FROM inserted a JOIN deleted b ON a.IdPlat=b.IdPlat JOIN Finanse t ON t.IDkl=a.IdKl AND t.IdKlient=a.numtKlienta WHERE b.zaplacono <> 1 AND a.zaplacono = 1) 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) UPDATE [@TypSklepu] SET iloscSprzedanych=iloscSprzedanych+@Suma WHERE NazwaProduktu=@NazProduktu; END 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?