Insert trigger
Insert trigger
Selam arkadaslar,
Sql server da insert trigeri icersinde insert edilen bir tablonun fieldini nasil set edebilirim.
Yani mesela insert into Table1 field1, field2 values ('a', 'b') gibi bir sql cumlesi calistiginda ben trigger icersinde filed3 = 'c' yapmak istiyorum.
Sql server da insert trigeri icersinde insert edilen bir tablonun fieldini nasil set edebilirim.
Yani mesela insert into Table1 field1, field2 values ('a', 'b') gibi bir sql cumlesi calistiginda ben trigger icersinde filed3 = 'c' yapmak istiyorum.
Kod: Tümünü seç
update tablo1 set field3='c' where .......
Tabi insert trigger'inin after insert olarak calismasi gerekiyor.
MSSQL kullanmadigim icin bilmiyorum fakat Sybase triggerlerinde silinen veya update'den onceki degerleri verdiginiz bir alias ile kullanabiliyorsunuz. (referencing old as oldrows) Yeni eklenen kayitlari da "referencing new as newrows" seklinde trigger basinda tanimlayip newrows.field3 seklidne kullanabiliyorsunuz.
MSSQL'de de bu vardir. asavas'in dedigi INSERTED ve DELETED o anlamda olabilir. Ornek herhangi bir trigger'da gorebilirsiniz bunu zaten.
Maksimum kaydi alip kullanmak makul gibi gorunmekle birlikte ileride boyle bir kod yazdiginizi unutup tablonuza ilgili alan degeri maksimum olan degil de arada bir degere sahip kayit eklediginizde sistem calismayacaktir. Dolayisiyla boyle birsey yapmamaniz gerektigini surekli hatirlamaniz lazim. Velhasil bence o sekilde yapmamali.
Kolay gelsin..
MSSQL'de de bu vardir. asavas'in dedigi INSERTED ve DELETED o anlamda olabilir. Ornek herhangi bir trigger'da gorebilirsiniz bunu zaten.
Maksimum kaydi alip kullanmak makul gibi gorunmekle birlikte ileride boyle bir kod yazdiginizi unutup tablonuza ilgili alan degeri maksimum olan degil de arada bir degere sahip kayit eklediginizde sistem calismayacaktir. Dolayisiyla boyle birsey yapmamaniz gerektigini surekli hatirlamaniz lazim. Velhasil bence o sekilde yapmamali.
Kolay gelsin..
Insert
Merhaba,
Insert işleminde Trigger gerçekleşirken Trigger Zamanlaması da önem taşıyor. Interbase'de Before Insert, After Insert gibi Kaydın öncesinde mi yoksa sonrasında mı şeklinde bir ayrım var. SQL Server'da da bu var.
Eğer After pozisyonunda ise (ki default'u budur) update'ini,
Ancak dikkat edilmesi gerweken bir şey eğer insert işlemi toplu bir inser ise bu şekilde olmaz, bu sadece aynı anda sadece bir kayıot yaparken kullanabilirsin.
Kolay Gelsin
Kuri TLJ
Insert işleminde Trigger gerçekleşirken Trigger Zamanlaması da önem taşıyor. Interbase'de Before Insert, After Insert gibi Kaydın öncesinde mi yoksa sonrasında mı şeklinde bir ayrım var. SQL Server'da da bu var.
Eğer After pozisyonunda ise (ki default'u budur) update'ini,
Kod: Tümünü seç
UPDATE TABLO1 SET FIELD3='c' WHERE (SELECT Tablo1dekiIdentityOlanField FROM INSERTED) = Tablo1dekiIdentityOlanField
Kolay Gelsin
Kuri TLJ
Re: Insert
Evet yeri gelmisken bu konu ile ilgili sunu belirteyim. Kuri_TLJ Bey'in de belirttigi gibi MS SQL Server statement level trigger calistirir dolayisiyla toplu insert ve update islemleri icin farkli yollar izlemeyi gerektirir.Kuri_TLJ yazdı:
Ancak dikkat edilmesi gerweken bir şey eğer insert işlemi toplu bir inser ise bu şekilde olmaz, bu sadece aynı anda sadece bir kayıot yaparken kullanabilirsin.
Kuri TLJ
Kendim kullandigim icin bildigim Sybase ve Interbase ise row level trigger calistirir ve dolayisiyla toplu olarak yapilan her insert , update veya delete islemi sirasinda her satir icin triggerlar ayri ayri calistirirlirlar.
Kolay gelsin...