Triggerek alkalmazása
Instead of trigger
A kiváltó utasítás helyett fut le.
After trigger
A kiváltó utasítás után fut le.
Insert, update, delete
Trigger-ekben használhatóak az inserted, updated virtuális táblák.
Egy dml utasítás hatására egyszer fut le a trigger akárhány rekordot is érintsen.
Az inserted táblában az összes érintett rekord változás utáni értékkel szerepel.
Az updated táblában az összes érintett rekord változás előtti értékkel szerepel.
A triggerek fajtái
DML, DDL és logon trigger
DDL
CREATE TRIGGER ddl_trig_database ON ALL SERVER FOR CREATE_DATABASE AS
PRINT 'Database Created’;
GO
Logon
CREATE TRIGGER connection_limit_trigger
ON ALL SERVER WITH EXECUTE AS 'login_test'
FOR LOGON
AS
BEGIN
IF ORIGINAL_LOGIN()= 'login_test' AND
(SELECT COUNT(*) FROM sys.dm_exec_sessions
WHERE is_user_process = 1 AND
original_login_name = 'login_test') > 3
ROLLBACK;
END;
DML instead of
Create trigger trg1 on view1 instead of insert as
begin
insert into table1 select col1, col2 from inserted;
end
go
DML after
Create trigger trg2 on table2 after insert, update as
begin
if(update(col1))
begin
update table1 t set t.col2 = i.col1 * 2, t.col3 = d.col2
left outer join inserted i on i.id=t.id
left outer join deleted d on d.id=t.id
end
end
go