Triggers in SQL Server

A SQL trigger is a database object which fires when an event occurs in a database. We can execute a SQL query that will "do something" in a database when a change occurs on a database table such as a record is inserted or updated or deleted. For example, a trigger can be set on a record insert in a database table. For example, if you want to increase the count of blogs in the Reports table when a new record is inserted in the Blogs table, we can create a trigger on the Blogs' table on INSERT and update the Reports table by increasing blog count to 1. 

Types of Triggers

There are two types of triggers:

  1. DDL Trigger
  2. DML Trigger

DDL Triggers

The DDL triggers are fired in response to DDL (Data Definition Language) command events that start with Create, Alter and Drop, such as Create_table, Create_view, drop_table, Drop_view and Alter_table.

Code of a DDL Trigger

create trigger saftey  
on database  
for  
create_table,alter_table,drop_table  
as  
print'you can not create ,drop and alter table in this database'  
rollback;

When we create, alter or drop any table in a database then the following message appears:

DDl-trigers-in-sql.jpg

DML Triggers

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.

create trigger deep  
on emp  
for  
insert,update,delete  
as  
print'you can not insert,update and delete this table i'  
rollback;

When we insert, update or delete in a table in a database then the following message appears,

dml-triggers-in-sql.jpg

There are two types of DML triggers

 

AFTER Triggers

AFTER triggers are executed after the action of an INSERT, UPDATE, or DELETE statement.

create trigger insertt  
on emp  
after insert  
as  
begin  
insert into empstatus values('active')  
end 

aftertrigger-in-sql.jpg

INSTEAD Of Triggers

It will tell the database engine to execute the trigger instead of executing the statement. For example an insert trigger executes when an event occurs instead of the statement that would insert the values in the table . 

CREATE TRIGGER instoftr  
ON v11  
INSTEAD OF INSERT  
AS  
BEGIN  
INSERT INTO emp  
SELECT I.id, I.names  
FROM INSERTED I  
   
INSERT INTO emp1values  
SELECT I.id1, I.name1  
FROM INSERTED I  
END

When we insert data into a view by the following query then it inserts values in both tables :

insert into v11 values(1,'d','dd') 

You can see both tables by the folowing query:

select * from emp  
select * from emp1values

insteedofcorsor-in-sql.jpg

Summary

In this article, I described triggers in SQL Server. I hope this article has helped you in understanding this topic. Please share it. If you know more about this, your feedback and constructive contributions are welcome. 

Continue learning more, Trigger in SQL