Hi,
Here we'll cover below –
- Table
- Constraints
- View
- SP
- Functions
- Index
- Triggers
Triggers
· There are two types of triggers,
AFTER triggers | Execute after the data modification has been completed against the table. |
INSTEAD OF triggers | · Execute instead of the original data modification. · INSTEAD OF triggers are allowed for both tables and views |
· Multiple triggers can be defined for one table. The order in which they are fired can be configured using the sp_settriggerorder stored procedure
· The Nested Triggers server option will determine if triggers can cause other triggers to fire (cascading triggers). If enabled, triggers can cascade in a chain of up to 32 firings.
· SQL Server creates two "virtual" tables specifically for triggers, the Deleted and Inserted tables. These two tables capture before and after pictures of the modified data.
Operation | Inserted Table | Deleted Table |
INSERT | New Rows | - |
UPDATE | New Rows | Old Rows |
DELETE | - | Deleted Rows |
· Points to Remember
o Triggers should be written to run quickly.
o Constraints usually run faster than a trigger
o You can only create triggers on table/viewss that you own
o If cascading referential integrity for DELETE or UPDATE is defined for the base table, you cannot define an INSTEAD OF DELETE or INSTEAD OF UPDATE on that table.
CREATE TRIGGER <trigger_name> ON <table_name or view_name>
[ WITH ENCRYPTION ]
[ (FOR or AFTER) DELETE, INSERT, UPDATE | INSTEAD OF DELETE, INSERT, UPDATE ]
[WITH APPEND] [NOT FOR REPLICATION]
AS
BEGIN
<transact_sql_statements>
END
GO
- You can use FOR or AFTER interchangeably and on tables.
- Specifies that the trigger should not be executed when a replication modification is performed against the table.
Creating an AFTER trigger CREATE TRIGGER trg_BookAudit ON Books FOR INSERT AS BEGIN UPDATE Inventory SET iTotalBooks = iTotalBooks + (SELECT COUNT(*) FROM INSERTED) END GO | Creating an INSTEAD OF trigger CREATE TRIGGER trg_BookAuthor_INSTEAD ON vBookAuthors INSTEAD OF INSERT AS INSERT Books (vchBookName, iAuthorId) SELECT inserted.vchBookName, inserted.iAuthorId FROM INSERTED INSERT Authors (iAuthorId, vchLastName, vchFirstName) SELECT inserted.iAuthorId, inserted.vchLastName, nserted.vchFirstName FROM INSERTED GO |
· Triggers can be enabled or disabled
ALTER TABLE Books
DISABLE TRIGGER ALL
Hope this helps.
Thanks & Regards,
Arun Manglick || Tech Lead
No comments:
Post a Comment