none
Datenbank Trigger

    Frage

  • Hallo,

    mithilfe eines datenbank triggers, kann man verhindern das bei ausführen eines bestimmten SQL Statement
    ob update, delete oder insert ein bestimmter SQL ausgeführt wird.

    Frage 1:

    In welchen Zusammenhang bzw. Anwendungsfall würdet Ihr sagen, wird ein Trigger in der Praxis eingesetzt?


    Frage 2:
    Kann mittels einen SQL trigger also folgendes gemacht werden:
    Im Datawarehouse verbieten, dass jegliche 'DELETE' Anweisung ausgeführt. 
    So müsste man ja nie mehr Befürchten, versehentlich einen DELETE Sql code versehentlich im Datawarehouse auszuführen.


    Viele grüße
    Kalle


    Kalle


    • Bearbeitet KalleSql Sonntag, 27. Januar 2013 21:37
    Sonntag, 27. Januar 2013 21:36

Alle Antworten

  • Hallo Kalle,

    zu 1) Trigger verwendet man z.B. um Änderungen an den Daten zu protokollieren oder um erweiterte Business Logik durchzusetzen, z.B. damit für einen Kunden, der das Kreditlimit überschritten hat, keine neuen Aufträge angelegt werden können (wobei man sowas eher über Stored Procedures löst).

    zu 2). Du könntest für jede Tabelle einen DELETE Trigger anlegen, der nur ein Rollback ausführt. Wenn es Dir aber darum geht, generell keine Änderungen an den Daten (zeitweise) zuzulassen, könntest Du die ganze Datenbank in einen Read-Only Modus setzen.

    USE [master]
    GO
    ALTER DATABASE [Test] SET  READ_ONLY WITH NO_WAIT
    GO
    

    Und wenn Du dann doch mal Daten ändern willst, änderst Du es wieder in den normalen Modus zurück.


    Olaf Helper

    Blog Xing

    Montag, 28. Januar 2013 08:42