Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> TRIGGER FOR UPDATE
john_doe
post
Post #1





Grupa: Zarejestrowani
Postów: 873
Pomógł: 25
Dołączył: 24.07.2005

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


Witajcie,

chciałbym napisać trigger który działa gdy zupdejtujemy jedno pole. Cała akcja rozgrywa się w jednej tabeli. Po prostu gdy updejtuje jedno pole ma zmienic sie inne na zadana przeze mnie wartosc.

Dokladniej:
tabela ma pola typ, id, seria i numer.
i tak gdy: update serii na 'WG' to numer ma sie zmienic na 113
gdy: update serii na 'TH' to numer ma sie zmienic na 100

seria jest polem typu <select> na stronie www

  1. SET QUOTED_IDENTIFIER ON GO
  2. SET ANSI_NULLS ON GO
  3.  
  4. ALTER TRIGGER CDN.KRY_trigerson ON tabela
  5. FOR UPDATE
  6. AS BEGIN SET NOCOUNT ON DECLARE @V_SERIA AS VARCHAR(5)
  7. DECLARE @V_TYP AS INT
  8. DECLARE @V_NR AS INT
  9.  
  10. SELECT @V_SERIA = INSERTED.TRN_TRNSERIA,
  11. @V_TYP = INSERTED.TRN_TRNTYP,
  12. @V_NR = INSERTED.TRN_TRNNUMER
  13. FROM INSERTED IF UPDATE ( TRN_TRNSERIA )
  14. BEGIN UPDATE CDN.TRANAG SET TRN_MAGzNUMER = 113
  15. WHERE TRN_GIDTYP = 2033 AND TRN_GIDNUMER = (SELECT TRN_GIDNUMER FROM INSERTED) END
  16.  
  17. SET NOCOUNT OFF
  18. END
  19.  
  20. GO
  21. SET QUOTED_IDENTIFIER OFF
  22. GO
  23. SET ANSI_NULLS ON GO


tak jak mam teraz to jaką kolwiek serie nie wybiore zamieni mi na 113, a ja chce aby np gdy seria WG to numerek jakis tam (taki jaki zadam), gdy seria TH to inny. ... i własnie tego nie wiem jak to przypisac

pozdro

Ten post edytował john_doe 21.08.2007, 17:16:17
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Kicok
post
Post #2





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

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


Zastosuj instrukcję CASE

Poniższy przykład powinien co nieco rozjaśnić. Wystarczy, że go sobie dostosujesz do swojego triggera:
  1. DECLARE @NUMER INT, @V_SERIA VARCHAR(5);
  2.  
  3. SET @V_SERIA = 'WG';
  4.  
  5.  
  6. SET @NUMER =
  7. CASE @V_SERIA
  8. WHEN 'WG' THEN 113
  9. WHEN 'TG' THEN 100
  10. ELSE 0
  11. END;
  12.  
  13. PRINT @NUMER;
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: 11.10.2025 - 11:17