Your browser does not support JavaScript! Please enable script of your browser.
D
O
tNet-Tricks
Handy Dot Net Tricks Implementation !!
" Coding , A Rhythmic Literary Job "
SQL Server - Tutorial, Article, Archive, Pdf, Handy Tricks, Training, Code Snippets, Reference Manual, T-SQL, PL/SQL, Development, Administration, Performance Tuning, Backup, Recovery, Reporting, Analysis, Security, XML, CLR Objects

Magic table or Virtual table in SQL Server

Posted By : Shailendra Chauhan, 25 Sep 2012
Updated On : 25 Sep 2012
Version Support : SQL Server 2005,2008,2012

Basically, magic table is the terminology used for virtual table in SQL Server since there is no magic in SQL Server. There are Inserted and Deleted virtual tables in SQL Server. These tables are automatically created and managed by SQL Server internally to hold recently inserted, deleted and updated values during DML operations (Insert,Update,Delete) on a database table.

Use of virtual tables

Basically, virtual tables are used by triggers for the following purpose:

  1. To test data manipulation errors and take suitable actions based on the errors.

  2. To find the difference between the state of a table before and after the data modification and take actions based on that difference.

Inserted Virtual Table

The Inserted table holds the recently inserted or updated values means new data values. Hence newly added and updated records are inserted into the Inserted table.

Suppose we have Employee table as shown in fig. Now We need to create two triggers to see data with in virtual tables Inserted and Deleted.

 CREATE TRIGGER trg_Emp_Ins
ON Employee
FOR INSERT
AS
begin
SELECT * FROM INSERTED -- show data in Inserted virtual table
SELECT * FROM DELETED -- show data in Deleted virtual table
end 

In the bwlow

 --Now insert a new record in Employee table to see data with in Inserted virtual tables
INSERT INTO Employee(EmpID, Name, Salary) VALUES(3,'Avin',23000)
SELECT * FROM Employee 

Deleted Virtual Table

The Deleted table holds the recently deleted or updated values means old data values. Hence old updated and deleted records are inserted into the Deleted table.

 CREATE TRIGGER trg_Emp_Upd
ON Employee
FOR UPDATE
AS
begin
SELECT * FROM INSERTED -- show data in INSERTED virtual table
SELECT * FROM DELETED -- show data in DELETED virtual table
 end 
 --Now update the record in Employee table to see data with in Inserted and Deleted Virtual tables
Update Employee set Salary=43000 where EmpID=3
SELECT * FROM Employee 

We could not create the virtual tables or modify the data with in the virtual tables. When we use the OUTPUT clause in SQL Server 2005, 2008 & 2012, then virtual tables are automatically created and managed by SQL Server.

Summary

I hope you will enjoy these tips/tricks while programming with LINQ to SQL. I would like to have feedback from my blog readers. Your valuable feedback, question, or comments about this article are always welcome.

 
 
 
Tips & Tricks Subscription :