INSTEAD OF Triggers

OK, so we’re all familiar with triggers now, right? You have seen that using a trigger you can log a change to a table in a special log file, or we can create a related record in another table. But all of these events happen after the action that triggers the trigger has completed.

What if you want to do something before the INSERT, UPDATE, or DELETE?

What if you want to do something instead of the action? For example, what if you want to simply flag a record as “deleted” rather then actually deleting the record?

What then, hot shot?

That’s where the INSTEAD OF TRIGGER comes in. Actually, the INSTEAD OF TRIGGER gives you one extra tool, you can now create triggers for views. The INSTEAD OF will handle inserting data into separate tables. You can simplify the data handling through this trigger.

Creating an INSTEAD OF Trigger

CREATE TRIGGER t_objectName_triggerAction
ON TableOrViewName
INSTEAD OF INSERT|UPDATE|DELETE
AS
    some T-SQL code here

Just like our FOR triggers, you start with the CREATE TRIGGER triggername ON objectName. The part we change is we use INSTEAD OF rather than FOR or AFTER.

Now I’d like to point out something that may not be obvious. If you build an INSTEAD OF INSERT trigger, then the values will not be in the table or view… but you will still have access to them from the inserted table.

Once you start to master this technique you can start doing some additional business logic in your database. Extra logging, and even intervening in user’s actions become possible. Be aware of the power you’ll now have over the basic functions INSERT, UPDATE, and DELETE.

If you have any questions, please, send them in. I’m here to help!

Tags:

No comments yet.

Leave a Reply

Notify me of followup comments via e-mail. You can also subscribe without commenting.