SQL – Identy & Trigger

Trigger, Türkçe anlamıyla Tetikleyici demektir. Bir tabloda değişiklik yaptığımızda başka tablolarda da otomatik değişiklik yapılmasını sağlar.

create trigger TrigerName on TableName
for Insert –TableName
as
Insert into TableName(Aciklama)
values(‘Trigger test edildi’)

@IDENTITY – SCOPE_IDENTITY VE IDENT_CURRENT

@IDENTITY
Açılmış olan bağlantıda son üretilen identity değerini dödürür.
@@Identiy tablo ve scope bakmaksızın, connectionda üretilen so identity’yi verir.DİKKAT:Eğer insert yaptığımız tabloda TRIGGER varsa, yanlış Identity alabiliriz.

SCOPE_IDENTITY
Açılmış olan bağlantıda ve sorgunun çalıştığı scope’ta son üretilen identity’yi dödürür.
Trigger kullanılan tablolarda Identity yerine scope_identity kullanılması tavsiye edilir.

IDENT_CURRENT(tableName)
Bağlantı ve scope bakılmaksızn, parametre olarak verilen tabloda üretilen son identity değerini döndürür.

create table DenemeTablo1(
Id int not null Identity(1,1),
Aciklama nvarchar(50) null
)

create table DenemeTablo2(
Id int not null Identity(1,1),
Aciklama nvarchar(50) null
)

create trigger trg_test on DenemeTablo1
for Insert	--denemetablo1'e birşey insert edildiğinde
as
Insert into DenemeTablo2(Aciklama)
values('Trigger test edildi')


select*from DenemeTablo2  --DenemeTablo2'deki verileri kontrol ettik.

insert into DenemeTablo2(Aciklama) values ('Deneme')	--önce denemetablo2ye değerler ekledik
insert into DenemeTablo1(Aciklama) values ('Deneme')	--sonrasında denemetablo1'e ekledik bu triggerı çalıştırarak denemetablo2ye değer ekledi
select @@IDENTITY	--sistem içerisinde en son yapılan işlem(id'yi) çek(tablo2ye eklenen verinin id'si)
union all
select SCOPE_IDENTITY()	--trigger'a bakmadan (kullanıcı tarafından yapılan) en son yapılan işlemi(idyi) çek
union all
select IDENT_CURRENT('DenemeTablo1')	--DenemeTablo1'de yapılan işlemi çek

Yorum bırakın

WordPress.com'da bir web sitesi veya blog oluşturun

Yukarı ↑

WordPress.com ile böyle bir site tasarlayın
Başlayın