SQL Server 'da INSERT veya UPDATE komutları işletildiğinde, gelen verinin kontrol edilip belli şartları sağlamaması durumunda değiştirilmesi için TRIGGER kullanılabilir. Aşağıda örnek olarak bir trigger verilmiştir.
Bu Trigger öncelikle INSERT ve UPDATE anlarında işletilecektir. Tercihe göre bir tanesi bırakılabilir.
Kodu açıklama gerekirse, KAYIT ANINDA veya GÜNCELLEME anında kullanıcı arabiriminden gelen "RECORD_GROUP" alanı eğer boş gelir ise bu alan otomatik olarak "Newbie" ibaresi ile değiştirilmekte ve alanın boş geçilmesi engellenmektedir.
-- AFTER CREATE TRIGGER [dbo].[TEST_TABLE_TRIGGER1] ON [dbo].[TEST_TABLE] AFTER INSERT, UPDATE AS BEGIN SET NOCOUNT ON; DECLARE @RECORD_GROUP varchar(50)
SELECT @RECORD_GROUP = i.RECORD_GROUP FROM inserted i -- gelen veri / incoming data
IF @RECORD_GROUP = '' BEGIN UPDATE dbo.TEST_TABLE SET RECORD_GROUP = '(Newbie)' -- yeni değer / new value FROM inserted WHERE dbo.TEST_TABLE.REFID = inserted.REFID END END
-- Benzer işlemler INSTEAD OF INSERT ile de yapılabilir fakat bu bağlamda INSERT kullanmak gerekiyor. Bu tür tekil veya az alan kontrolünde YUKARIDAKİ TEKNİĞİN daha ideal olduğunu düşünüyorum fakat INSTEAD OF daha performanslı çalışıyor.
-- BEFORE CREATE TRIGGER [dbo].[TEST_TABLE_TRIGGER2] ON [dbo].[TEST_TABLE] INSTEAD OF INSERT AS BEGIN SET NOCOUNT ON; DECLARE @RECORD_GROUP varchar(50)
SELECT @RECORD_GROUP = i.RECORD_GROUP FROM inserted i -- gelen veri / incoming data
IF @RECORD_GROUP = '' BEGIN INSERT TEST_TABLE SELECT REFID, NAME, SURNAME, '(Newbie)' FROM inserted END END
-- Örnekte kullanılan tablo yapısı: CREATE TABLE [dbo].[TEST_TABLE]( [REFID] [int] NOT NULL, [NAME] [varchar](50) NOT NULL, [SURNAME] [varchar](50) NOT NULL, [RECORD_GROUP] [varchar](50) NOT NULL, CONSTRAINT [PK_AA] PRIMARY KEY CLUSTERED ( [REFID] ASC ))
KeyWords: SHow can I edit values of an INSERT in a trigger on SQL Server?, T-SQL how to modify the value before insert, Modify data before it's inserted in SQL Server
------------- http://www.kasatakip.com - Kasa Takip | http://www.caritakip.com - Cari Takip | http://www.evraktakip.com - Evrak Takip | http://www.etasqlmobil.com - ETA SQL Mobil
|