Welcome to Sign in | Help
in Search

SQL Trigger

Last post 02-27-2008, 2:48 PM by dorin. 19 replies.
Page 1 of 2 (20 items)   1 2 Next >
Sort Posts: Previous Next
  •  02-26-2008, 10:53 AM 4172

    SQL Trigger

    Salut,

    Am urmatoarea problema: cum creez un trigger in sql server 2005 care sa auditeze orice schimbari se petrec intr-o tabela (e.g. Table1) si sa salveze *doar* datele schimbate intr-o alta tabela (e.g. Audit).
  •  02-26-2008, 11:01 AM 4173 in reply to 4172

    Re: SQL Trigger

    dorin:
    Salut,

    Am urmatoarea problema: cum creez un trigger in sql server 2005 care sa auditeze orice schimbari se petrec intr-o tabela (e.g. Table1) si sa salveze *doar* datele schimbate intr-o alta tabela (e.g. Audit).


    sau sa salvez row-ul modificat in tabela "audit".
  •  02-26-2008, 11:18 AM 4174 in reply to 4173

    Re: SQL Trigger

    Vrei sa modifici datele din tabel (---> INSERT, UPDATE, DELETE) sau si schema tabelului (---> ALTER TABLE)?

    Daca modifici doar datele, folosesti un trigger DML. In BOL (vezi "DML Triggers in the AdventureWorks Sample Database ") gasesti un exemplu apropiat de ceea ce vrei tu - atentie la rolul tabelelor "inserted" si "deleted".

    Pentru modificari de schema, vezi tot in AdventureWorks exemplul de trigger DDL "ddlDatabaseTriggerLog".

  •  02-26-2008, 11:32 AM 4175 in reply to 4174

    Re: SQL Trigger

    doar datele din tabel, nu ma intereseaza daca se modifica structura tabelului, doar UPDATE

    nu stiu din ce cauza nu merge sa folosesc triggere DML - e.g. "inserted" and / or "deleted" -

    daca incerc:

    SELECT * FROM deleted

    rezulta:
    "Invalid object name 'deleted'."
  •  02-26-2008, 11:43 AM 4176 in reply to 4175

    Re: SQL Trigger

    Pentru "instructiuni de folosire" vezi BOL --->"SQL Server Database Engine" ---> "Designing and creating databases" ---> "DML triggers" ---> "Implementing DML triggers" ---> "Using the inserted and deleted Tables ".
  •  02-26-2008, 11:57 AM 4177 in reply to 4175

    Re: SQL Trigger

    dorin:
    doar datele din tabel, nu ma intereseaza daca se modifica structura tabelului, doar UPDATE

    nu stiu din ce cauza nu merge sa folosesc triggere DML - e.g. "inserted" and / or "deleted" -

    daca incerc:

    SELECT * FROM deleted

    rezulta:
    "Invalid object name 'deleted'."

    Poti posta codul trigger-ului ?

    Ignat Andrei
    http://serviciipeweb.ro/iafblog
  •  02-26-2008, 12:08 PM 4178 in reply to 4177

    Re: SQL Trigger

    -
    ALTER TRIGGER Trigger1 ON dbo.TestTable FOR UPDATE, INSERT, DELETE AS

    INSERT INTO dbo.AuditTable SELECT * FROM deleted
    -

    codul asta nu da nici o eroare - dar nici nu face nimic Smile
  •  02-26-2008, 12:11 PM 4179 in reply to 4178

    Re: SQL Trigger

    dorin:
    -
    ALTER TRIGGER Trigger1 ON dbo.TestTable FOR UPDATE, INSERT, DELETE AS

    INSERT INTO dbo.AuditTable SELECT * FROM deleted
    -

    codul asta nu da nici o eroare - dar nici nu face nimic Smile

    Banuiesc ca ai incercat sa stergi ceva, nu ?
    AuditTable are aceeasi structura ca si TestTable ?

    Ignat Andrei
    http://serviciipeweb.ro/iafblog
  •  02-26-2008, 12:15 PM 4180 in reply to 4178

    Re: SQL Trigger

    Primul pas daca vrei tehnic doar modificare de ce si INSERT si DELETE?
    For UPDATE ajunge.
  •  02-26-2008, 12:29 PM 4181 in reply to 4179

    Re: SQL Trigger

    in principiu au aceeasi structura, singura diferenta = "Audit" are un row in plus (ID) care se auto-incrementeaza cand se adauga date in tabela.

    [dupa mai multe incercari]

    am incercat sa modific un row deja existent in "TestTable"... si functioneaza codul, copiaza intregul row din tabela "TestTable" in "Audit" - dar daca incerc sa modific inca o data ceva, imi da o eroare "Violation of UNIQUE KEY constraint ....." / "Cannot insert duplicate key in object ......"

    problema e, cum modific / incrementez "unique key" ?



    CODE:
    -
    ALTER TRIGGER Trigger1 ON dbo.TestTable FOR UPDATE AS

    INSERT INTO dbo.Audit SELECT * FROM deleted
    -
  •  02-26-2008, 12:37 PM 4183 in reply to 4181

    Re: SQL Trigger

    Asta tine de structura lui TestTable. Probabil incerci sa inserezi de mai multe ori aceeasi valoare intr-o coloana cu o constrangere de tipul "UNIQUE".
  •  02-26-2008, 2:22 PM 4185 in reply to 4183

    Re: SQL Trigger

    am scos unique key-ul si acum functioneaza.

    multam mult de tot Smile
  •  02-26-2008, 2:25 PM 4186 in reply to 4181

    Re: SQL Trigger

    dorin:
    in principiu au aceeasi structura, singura diferenta = "Audit" are un row in plus (ID) care se auto-incrementeaza cand se adauga date in tabela.

    [dupa mai multe incercari]

    am incercat sa modific un row deja existent in "TestTable"... si functioneaza codul, copiaza intregul row din tabela "TestTable" in "Audit" - dar daca incerc sa modific inca o data ceva, imi da o eroare "Violation of UNIQUE KEY constraint ....." / "Cannot insert duplicate key in object ......"

    problema e, cum modific / incrementez "unique key" ?



    CODE:
    -
    ALTER TRIGGER Trigger1 ON dbo.TestTable FOR UPDATE AS

    INSERT INTO dbo.Audit SELECT * FROM deleted
    -


    Coloana este identity sau NEWID ?

    Nu merge din cauza ca tu incerci sa inserezi si in coloana respectiva
    Incearca cu
    ALTER TRIGGER Trigger1 ON dbo.TestTable FOR UPDATE AS

    INSERT INTO dbo.Audit(Coloana1,Coloana2, <etc FARA COLOANA DE ID CARE E IN PLUS>) SELECT COLOANA1, COLOANA2 FROM deleted
    -


    Ignat Andrei
    http://serviciipeweb.ro/iafblog
  •  02-26-2008, 2:42 PM 4188 in reply to 4186

    Re: SQL Trigger

    da, si sa selectez, concret, ce am nevoie sa salvez in tabela "Audit" era o optiune.

    dar nu mai are sens, pt ca nu am nevoie, oricum, de "unique key"

    multumesc pt info Smile
  •  02-26-2008, 3:15 PM 4189 in reply to 4188

    Re: SQL Trigger

    Verifica inca o data ca intr-adevar nu-ti trebuie constrangerea "UNIQUE" - poate este ceruta in logica unei aplicatii (?), etc...
Page 1 of 2 (20 items)   1 2 Next >
View as RSS news feed in XML
Powered by Community Server (Commercial Edition), by Telligent Systems