Magic Tables in SQL Server : A Comprehensive Guide

a diagram of a database

Are you looking for an easy and efficient way to track changes in your SQL Server database? Magic Tables, a feature introduced in SQL Server 2012, can help you do just that. In this article, we'll cover everything you need to know about Magic Tables, including their purpose, how they work, and how to use them.

What are Magic Tables?

Magic Tables are virtual tables that are automatically created and maintained by SQL Server for each data modification operation performed on a table. They allow you to access the old and new values of the modified rows without writing any additional code.


How do Magic Tables work?

When a data modification operation is performed on a table, SQL Server creates two Magic Tables: inserted and deleted. The inserted table contains the new values that were inserted or updated, while the deleted table contains the old values that were deleted or updated. These tables can be accessed using a trigger or a MERGE statement.


Why use Magic Tables?

Magic Tables provide an easy and efficient way to track changes in your database. They eliminate the need for writing complex trigger code to track changes and can help you quickly identify and troubleshoot issues.

a computer screen shot of a program code

How to use Magic Tables

To use Magic Tables, you can create a trigger on a table that you want to track changes for. The trigger can be written to insert the old and new values into a log table or to perform other actions based on the changes made. Here's an example of a trigger that logs changes made to aCustomers table:

sqlCopy code
CREATE TRIGGER trg_Customers
ON Customers
FOR INSERT, UPDATE, DELETE
AS
BEGIN
INSERT INTO Customers_Log (CustomerId, OldName, NewName, OldAddress, NewAddress)
SELECT i.CustomerId, d.Name, i.Name, d.Address, i.Address
FROM inserted i
JOIN deleted d ON i.CustomerId = d.CustomerId
END


Magic Tables limitations

While Magic Tables can be a useful tool, they do have some limitations. Here are a few to keep in mind:

  • Magic Tables are only created for data modification operations performed on a table, not for schema changes.
  • Magic Tables are not created for operations performed inside transactions that are later rolled back.
  • Magic Tables can have a performance impact on your database, especially if you're modifying large amounts of data.

Conclusion

Magic Tables are a powerful feature in SQL that can help you track changes in your database with ease. By providing access to the old and new values of modified rows, Magic Tables eliminate the need for complex trigger code and can help you quickly identify and troubleshoot issues. While they do have some limitations, their benefits far outweigh the drawbacks. So why not give them a try and see how they can simplify your database development process.`

At PLOVER, we take pride in offering a diverse range of remote work options, and we understand that finding the right job can be a challenging task. That's why all the jobs listed on our platform are verified by us to ensure that they meet our strict criteria. We make sure that each job is remote, pays in USD, and meets our working conditions, so you can focus on finding the best fit for you.

final thought

a grey symbol with curved linesWe at Plover bring you a weekly newsletter with the best new remote jobs, stories and ideas from the remote work community, and occasional offbeat pieces to feed your curiosity. a grey symbol with curved lines

by Harsh Verma

final thought

a grey symbol with curved linesWe at Plover bring you a weekly newsletter with the best new remote jobs, stories and ideas from the remote work community, and occasional offbeat pieces to feed your curiosity. a grey symbol with curved lines

by Harsh Verma