Yazı

T-SQL Trigger ile Kayıt İşlemlerini Engellemek

 23. Tem 2015  T-Sql  (0)

Tüm Kayıt İşlemlerini Engellemek

Veritabanında bir tabloda kayıt işlemlerini nasıl engelleriz. Bu işlem pek kullanılmaz desemde olmadık zamanda karşımıza çıkabiliyor.

Kısaca Trigger kullanarak Ekleme, Silme, Güncelleme (Insert,Update,Delete) işlemini nasıl engellerim bir ele alalım. Bunun için veritabanım trigger desteklemesi gerek, MS Sql, MySql vb. Gidipte Microsoft Access gibi veritabanlarında trigger aramayın çünkü bulamassınız. Veritabanları konusunda daha detaylı makalaler yazınca buraya eklerim.

Bir örnek yaparak konuyu bitirelim,

SQL serverımda "Test" isimli bir veritabanı oluşturdum. Veritabanıma 1 adet "Uyeler" isimli bir tablo uluşturup, içince 2 adet denemek için bir kayıt girdim. Trigger oluşturmak için aşağıdaki resimde gördüğünüz gibi Trigger yazan kısmın üstünde sağ tuşa tıklayıp "New Trigger" deyin. (Şekil 1)

Şekil.1

Açılan sorgu ekranına aşağıdaki komutu girip "Execute" Butonuna tıklayın veya "Sorgu çalıştır" butonuna tıklayın. Trigger tabloya eklenecektir, aşağıdaki kod tabloya ekleme,düzenleme,silme gibi işlemler yapıldığı zaman hata mesajı verip işlem yaptırtmayacaktır. 

CREATE TRIGGER [Uyeler_KayitTrigger] 
ON [[Uyeler] 
AFTER INSERT,UPDATE,DELETE
AS
BEGIN
RAISERROR ('Kayıt işlemi engellendi.', 16, 1);
ROLLBACK TRANSACTION;
RETURN 
END;

Sadece ekleme , sadece düzenleme veya sadece silme işlemlerinden birinin blokesini yapmak istiyorsanız. Kod satırındaki 

AFTER INSERT,UPDATE,DELETE

bu bölümde değişiklik yapabilirsiniz.

AFTER INSERT => Sadece ekleme işlemini kısıtla,

AFTER UPDATE => Sadece güncelleme işlemini kısıtla,

AFTER DELETE => Sadece silme işlemini kısıtla,

AFTER INSERT, DELETE => Sadece ekleme ve silme işlemini kısıtla, vb..

Kriter Kullanarak Kayıt İşlemleri Engellemek

Tablodaki tek bir kaydın veya herhangi bir kritere göre kayıt kısıtlaması da yapabilirsiniz. Aşağıdaki kod bloğunda Id'si 1 olanında kayıt işlemini kısıtladık. Örnekler genişletilebilir.

CREATE TRIGGER [Uyeler_KayitTrigger] 
ON [Uyeler] 
AFTER INSERT,UPDATE,DELETE
AS
BEGIN
IF EXISTS ( select * from inserted where Id=1 )
	BEGIN
		RAISERROR ('Kayıt işlemi engellendi.', 16, 1);
		ROLLBACK TRANSACTION;
		RETURN 
	END
END
IF EXISTS ( select * from inserted where Id<5 ) 
--Id'si  5 ten küçüklerin kayıt işlemini engelle vb....

Örnek kod.

  • Örnek Test Script (.zip)
    0 kb | 14 indirme
    İndir

 2 kişi tarafından 2 olarak değerlendirildi:
 Bu içeriği değerlendirin
 Paylaş:

 İlişkili yazılar

MS SQL Server'da tabloların boyutunu öğrenin
WITH S AS ( SELECT t.Name AS TableName, s.Name

T-SQL Cursor Örnek - TRIGGER TETİKLETME
T-SQL Cursor örneği, ve bir tabloda trigger yazdıysanız toplu olarak tetikletme ihtiyacı varsa işe y

SQL WITH Kullanımı
Aşağıdaki kod sql with kullanımı ile bir örnek. Bu ara sık kullanmaya başladım. Te burda dursun

SQL Triger ile tablonun kayıt güncelleme(Update) işleminini engellemek.
SQL Triger ile tablonun kayıt güncelleme(Update) işleminini engellemek.

MSSQL Identity Sıfırlamak
MSSQL ile Identity kullandığınız bir tablonun , Identity değerini sıfırlamak için DBCC CHECKIDENT (

Yorumlar (0)