Tiggers are commonly used to automate data updates in SQL Server. This article describes the fundamentals of triggers in SQL, the different categories of triggers, and how to implement triggers in SQL Server.
What is the SQL Server Trigger?
A SQL trigger is a database object that executes when a database event occurs. When a record is inserted, updated, or deleted, for example, we can execute a SQL query that will “do something” in the database. A trigger can be set on a record insert in a database table, for instance. For instance, to increase the blog count in the Reports table when a new record is inserted into the Blogs table, we can construct a trigger on the Blogs table on INSERT and update the Reports table by increasing the blog count by 1.
Types of SQL Server Triggers
Two categories of triggers exist:
- DDL Trigger
- DML Trigger
- DDL Triggers in SQL Server
The DDL triggers are activated in response to DDL (Data Definition Language) command events that begin with Create, Alter, and Drop, such as Create_table, Create_view, drop_table, Drop_view, Alter_table, and Alter_view.
The DDL Trigger Code
When we create, alter, or drop any table in a database, then the following message appears,
DML Triggers in SQL Server
The DML triggers are fired in response to DML (Data Manipulation Language) command events that start with Insert, Update, and Delete. Like insert_table, Update_view and Delete_table.
When we insert, update, or delete a table in a database, then the following message appears,
Logon Triggers in SQL Server
In SQL Server, logon triggers are special types of triggers that are designed to execute automatically in response to a user’s logon event. When a user connects to a SQL Server instance, the logon trigger fires before the user’s session is established, allowing you to perform certain actions or enforce specific rules based on the user’s login.
In this example, we create a logon trigger called LogonAuditTrigger that fires for all logon events on the server. The trigger is configured to execute under the context of the sa account, which requires appropriate permissions.
Within the trigger’s body, we perform an action of inserting logon event details into an audit table called LogonAudit. The ORIGINAL_LOGIN() function retrieves the login name of the user who is attempting to log in. GETDATE() returns the current date and time when the logon occurs. HOST_NAME() retrieves the client host name or IP address from which the logon originates.
By using this logon trigger, each time a user logs in to the SQL Server instance, the trigger will capture and store the login name, login time, and client host information in the LogonAudit table, providing an audit trail of logon events.
Types of DML triggers
There are two types of DML Triggers in SQL Server.
AFTER Triggers
AFTER triggers are executed after the action of an INSERT, UPDATE, or DELETE statement.