--------------------------------------------------------------------- -- Zisti, identifikuj typ triggera -- pomocou -- IF EXISTS(SELECT * FROM inserted) -- IF EXISTS(SELECT * FROM deleted) -- Nezabudni: -- inserted Tab je vytvoreny pre INSERT and UPDATE -- deleted Tab je vytvoreny pre DELETE and UPDATE --------------------------------------------------------------------- use tempdb; GO -- Create table T1 IF OBJECT_ID('dbo.T1') IS NOT NULL DROP TABLE dbo.T1; GO CREATE TABLE dbo.T1 ( keycol INT NOT NULL PRIMARY KEY, datacol VARCHAR(10) NOT NULL ); GO IF OBJECT_ID ('trg_T1_iud', 'TR') IS NOT NULL DROP TRIGGER trg_T1_iud GO CREATE TRIGGER trg_T1_iud ON dbo.T1 FOR INSERT, UPDATE, DELETE AS DECLARE @rc AS INT; SET @rc = @@rowcount; -- 1) IF @rc = 0 BEGIN PRINT 'Nedoslo k zmene v datach'; RETURN; END -- 2-3-4) Nezabudni: -- inserted Tab je vytvoreny pre INSERT and UPDATE -- deleted Tab je vytvoreny pre DELETE and UPDATE-!!! IF EXISTS(SELECT * FROM inserted) BEGIN IF EXISTS(SELECT * FROM deleted) BEGIN PRINT 'Ide o UPDATE'; END ELSE BEGIN PRINT 'Ide o INSERT'; END END ELSE BEGIN PRINT 'Ide o DELETE'; END GO -- Test trg_T1_iud trigger -- 0 Rows INSERT INTO T1 SELECT 1, 'A' WHERE 1 = 0; -- INSERT INSERT INTO T1 SELECT 1, 'A'; -- UPDATE UPDATE T1 SET datacol = 'AA' WHERE keycol = 1; -- DELETE DELETE FROM T1 WHERE keycol = 1; GO -- Upratovanie IF OBJECT_ID('dbo.T1') IS NOT NULL DROP TABLE dbo.T1; GO ------------------------------------------------------------- -- Koniec. -------------------------------------------------------------