Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: trigger for insert
Forum PHP.pl > Forum > Bazy danych > Microsoft SQL Server / MSDE
john_doe
Witajcie,

mam do napisania moj 1szy TRIGGER smile.gif
podczas gdy sa wstawiane wiersze do jednej tabeli musze wstawic cos do innej.

czy zapis w stylu

  1. SELECT id, cos1, cos1 FROM inserted


oznacza pobranie tych pol z tabeli na ktorej robie insert? czy tam na ktorej jest ten trigger?

albo takie pytanie jeszcze:
jak w klauzuli WHERE odwołac sie do wlasnie wstawionego pola? czyli np

  1. UPDATE Tabela SET Opis=@OPIS
  2. WHERE tabela_id = (i tutaj chcialbym id tego do ktorego poszedl INSERT)


pozdrawiam
SongoQ
Moze tak:

  1. DECLARE @ID INT
  2. SELECT @ID = (SELECT ID FROM Inserted) INSERT TABLE VALUES (@ID)


A jak nie to tak jak w PG przez new
john_doe
wszystko dziala trigger jest praaaawie oki gdyby nie najwazniejsza rzecz:

  1. DECLARE @OPIS VARCHAR(100)
  2. DECLARE @GIDTYP INT
  3. DECLARE @GIDFIRMA INT
  4. DECLARE @GIDNUMER INT


potem robie insert

  1. INSERT INTO tabela.TRNOPISY (TnO_TrnTyp, TnO_TrnFirma, TnO_TrnNumer, TnO_TrnLp, TnO_Typ, TnO_Opis)
  2. VALUES (@GIDTYP, @GIDFIRMA, @GIDNUMER, 0, 0, @OPIS)


i tutaj zonk bo do tabeli wrzuca mi NULL (@opis)

co moze byc nie tak?
SongoQ
Napisz w jaki sposob przypisujesz dane do zmiennych.
john_doe
  1. DECLARE @OPIS VARCHAR(70)
  2. DECLARE @GIDTYP INT
  3. DECLARE @GIDFIRMA INT
  4. DECLARE @GIDNUMER INT
  5.  
  6. SELECT @GIDTYP = ( SELECT TRN_GIDTYP FROM INSERTED )
  7. SELECT @GIDFIRMA = ( SELECT TRN_GIDFIRMA FROM INSERTED )
  8. SELECT @GIDNUMER = ( SELECT TRN_GIDNUMER FROM INSERTED) SELECT @OPIS = (
  9. SELECT kno_opis
  10. FROM kntkarty RIGHT OUTER JOIN kntopisy
  11. ON Knt_GIDNumer = KnO_KntNumer
  12. WHERE KNT_AKRONIM =
  13. (
  14. SELECT KNT_AKRONIM FROM KNTKARTY LEFT OUTER JOIN TRANAG
  15. ON Knt_GIDNumer = TrN_KntNumer
  16. WHERE TRN_GIDNUMER = @GIDNUMER
  17. )
  18. )
  19.  
  20. INSERT INTO TRNOPISY ( TnO_TrnTyp, TnO_TrnFirma, TnO_TrnNumer, TnO_TrnLp, TnO_Typ, TnO_Opis )
  21. VALUES ( @GIDTYP, @GIDFIRMA, @GIDNUMER, 0, 0, @OPIS )


to jest body mojego trigera. wszystkie zmienne dzialaja za wyjatkiem @opis. sprawdzalem ta co mam pod @opis i jest oki ale do tabeli dodaje NULL
SongoQ
Moze mu typy nie pasuja ale wtedy by blad wywalil. Ale jest wartosc jest pod opisem to powinien zadzialac. Zostaje Ci googlowanie i przegladanie dokumentacji moze cos konkretnego znajdziesz.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.