Welcome to Sign in | Help
in Search

trigger conditionat

Last post 12-14-2008, 7:46 PM by neo. 3 replies.
Sort Posts: Previous Next
  •  12-14-2008, 6:03 PM 6441

    trigger conditionat

    Salut,

    Incerc sa fac si eu un trigger pe un tabel (ID(PK), COL1(vchar(15)), Created(DateTime))care ar trebuie sa se comporte astfel:

     - pe ultimile 24 H de la momentul curent ( ... where created between getdate()- 1 and getdate()  ) sa "asculte " toate inserturile in tabela, si cand am un group by col1>=6 sa fac un insert into BazaDeDate.dbo.tabelx la valoarea din group by.

    Problema mea este ca trebuie sa fac insert intro tabela "tabelx " doar o singura data ptr ULTIMA valoarea care indeplineste conditiile de mai sus , urmand ca ulterior cand se mai aduna inregistrari care sa indeplineasca conditiile respective d-abia atunci sa se faca insert dar pentru respectiva valoare din noul group by.

    Eu am facut un tiger de tipul "AFTER INSERT", dar imi face de fiecare data insert la valorile pe care le-am mai inserat o data...pe acestea as dori sa le exclud si sa iau in considerare doar ultima grupare (daca este posibil fara sa compar tabele intrucat vor fi imense)

    Multumesc.

     

     


    G.
  •  12-14-2008, 6:47 PM 6442 in reply to 6441

    Re: trigger conditionat

    Mai scrie intr-o tabela data ultimei "scrieri" - si trigger-ul mai intii verifica aceasta data. Daca nu au trecut 24 de ore ( sau ce conditie mai vrei) , trigger-ul nu face insert.
    Ideea este sa "retii" conditiile intr-o alta tabela...

    Ignat Andrei
    http://serviciipeweb.ro/iafblog
  •  12-14-2008, 6:52 PM 6443 in reply to 6441

    Re: trigger conditionat

    [1] adaugi în tabela (presupunând că e doar o tabelă) pe care o interoghezi, denumită în continuare TabelaPeştelui,
    ... where created between getdate()- 1 and getdate() ...
    un câmp ID INT IDENTITY(1,1)

    [2] creezi o tabelă auxiliară
    CREATE TABLE TabelaID (ID INT NOT NULL)

    [3] În declanşator adaugi următoarele comenzi T-SQL
    ...
    DECLARE @last_id INT
    DECLARE @max_id INT

    SET @last_id =  ISNULL( (SELECT MAX(ID) FROM TabelaID) , 0 )
    SET @max_id = ISNULL( (SELECY MAX(ID) FROM TabelaPeştelui) , 0 )

    ... from TabelaPeştelui
        where (ID BETWEEN @last_id+1 AND @max_id)
              AND created between getdate()- 1 and getdate() ...

    ...


    INSERT INTO TabelaID VALUES ( @max_id )
  •  12-14-2008, 7:46 PM 6444 in reply to 6443

    Re: trigger conditionat

    multumesc frumos...

     


    G.
View as RSS news feed in XML
Powered by Community Server (Commercial Edition), by Telligent Systems