SQL Server Trigger INSERT anında veride değişimi |
Yanıt Yaz |
Yazar | |
murat turan
Üye Profili
Özel Mesaj Yolla
Bu kullanıcıya ait mesajları bul
Üyenin Web Sitesie Git
Arkadaş Listeme Ekle
Admin Group Datakent Kayıt Tarihi: 01.Ekim.2003 Bulundugu Yer: Turkey Online: Sitede Değil Gönderilenler: 1798 |
Alıntı Cevapla
Konu: SQL Server Trigger INSERT anında veride değişimi Gönderim Zamanı: 27.Ocak.2016 Saat 13:45 |
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 Düzenleyen murat turan - 08.Subat.2016 Saat 10:16 |
|
Yanıt Yaz |
Forum Atla | Forum İzinleri Kapalı Foruma Yeni Konu Gönderme Kapalı Forumdaki Konulara Cevap Yazma Kapalı Forumda Cevapları Silme Kapalı Forumdaki Cevapları Düzenleme Kapalı Forumda Anket Açma Kapalı Forumda Anketlerde Oy Kullanma |