Generally we are using DML
statements like Insert for inserting data into database table likewise Update
for updating existing data in database table, but it is also possible to change
the default behavior INSERT/UPDATE/DELETE (DML) statements for example while
inserting data using INSERT statement, the new record may applies as an update
to the table or even applies as a delete to the table.
You can implement the changing
behavior with INSTEAD OF TRIGGER. Let’s do some practical to achieve the
changing behavior of DML statements.
use testDemo
go
if object_id('ChangingDMLBehavior')
is not null
drop table ChangingDMLBehavior
go
We were checking the existence
of 'ChangingDMLBehavior' table object.
Now lets create a table 'ChangingDMLBehavior'
create table ChangingDMLBehavior
(id int not null identity(1,1),
name varchar(10))
Command(s)
completed successfully.
Table is now ready; it’s time
to write an INSTEAD OF TRIGGER to stimulate the changing behavior of INSERT statement.
create trigger trg_DMLBehavior on
ChangingDMLBehavior
instead of insert
as
begin
select * from inserted
select * from deleted
return
end
go
Command(s) completed successfully.
Now since Trigger is in place,
now it’s time to try out INSERT statement on 'ChangingDMLBehavior' and check out the behavior of INSERT
Statement.
insert into ChangingDMLBehavior(name) values('Binny')
Now querying the table to find
the inserted records, to our shock we found no records.
select * from ChangingDMLBehavior
id name
-----------
----------
(0 row(s) affected)
This is because a record is
inserted to table 'ChangingDMLBehavior' with INSERT command, but nothing
happens to the table due to the instead of trigger. This is because the trigger
does not tell SQL Server to perform any data manipulation operation.
Let’s do some modification of INSTEAD
OF TRIGGER to allow INSERT OPTION on table.
alter trigger trg_DMLBehavior on
ChangingDMLBehavior
instead of insert
as
begin
set nocount on
insert into ChangingDMLBehavior(name)
select
name from inserted
return
end
go
Command(s) completed successfully.
Now we can fire INSERT
statement on 'ChangingDMLBehavior' table and can expect insertion of record to
the table. Lets insert one record into 'ChangingDMLBehavior'.
insert into
ChangingDMLBehavior(name) values('Prachi')
(1 row(s) affected)
Querying the table we get
select * from ChangingDMLBehavior
id name
-----------
----------
1 Prachi
(1 row(s) affected)
Instead of triggers are useful
when you want some setting kind of table in database to hold the defined
values.
When you
are in love with your code you will stop dreaming code with closed eyes because
reality better than your dreams
Post Reference: Vikram Aristocratic Elfin Share
No comments:
Post a Comment