• SQL

    SQL Ders25- Transaction Kullanımı

    Transaction örneğimizi Northwind veri tabanımızdan gerçekleştiriyor olacağız. Bu transaction’ımızda foreign key hatası yüzünden tüm yapılan işlemler geri alınacaktır. Rollback transaction çalışacaktır. Burada küçük bir ayrıntıya değinelim. Bir transaction açıldığı zaman, transaction scope içerisinde değişiklik gören kayıtlar var ise bu kayıtlar lock durumuna alınır. Aksini belirtmediğiniz sürece transaction bitene kadar başka bir kullanıcı bu kayıtlara ulaşamaz, okuyamaz ve üzerinde değişiklik yapamaz. Eğer kaç tane transaction yarattığınızı öğrenmek istiyorsanız aşağıdaki kodu kullanabilirsiniz. İç İçe Transactionlar(Nested Transactions) Kimi zaman bir transaction bitmeden diğer bir transaction yaratma isteğimiz doğabilir. Bunlara da Nested Transaction denir. Burada görüldüğü gibi tran1 transaction’ı bitmeden tran2 transaction başlamış durumdadır. İçinde bulunan transaction’ları ya Rollback eder ya da Commit. Save…

  • SQL

    SQL Ders24- Transaction Nedir

    Transaction, daha küçük parçalara ayrılamayan en küçük işlem yığınına denir. Belirli bir grup işlemin arka arkaya gerçekleşmesine rağmen, işlemlerin toplu olarak değerlendirilmesini sağlar. “Transaction”, prensip olarak ya bütün işlemleri gerçekleştirir ya da hiçbirini gerçekleştirmez. İşlemlerden biri dahi başarısız olursa, bu prensip nedeniyle hiçbir işlem olmamış kabul edilir; ancak tüm işlemler başarılı olduğunda” transaction”, içinde gerçekleşen tüm veri değişikliklerini onaylamış demektir. Bu işlemlerin ardı arkasına gelince bir tanesinin bile gerçekleşmemesi veri kaybına neden olacağı anlamına gelmektedir. Bu işlemler sırasında veriler üzerindeki değişikliklerin de tutarlı olması, birbirlerini tamamlayıcı nitelik taşıması gerekir. Bu özellikleri sağlayabilmesi içintransaction kavramı ortaya atılır. Veri tabanı uygulamaları geliştirirken böyle bir hataya sebep olacakları da düşünerek transaction bloğunun içine alınarak işlemler yapılır.…

  • SQL

    SQL Ders23- Trigger Kullanımı instead of

    Bu konumuzda Trigger’larda instead of kullanımını göreceğiz. Şimdi Araba adında bir tablo oluşturalım. Burada SatildiMi kolonunu default değerini 1 olarak atama işlemini gerçekleştirdik. Oluşturulan tablomuza birkaç kayıt girelim. Şimdi tablomuza bir göz atalım. Gördüğümüz gibi SatildiMi kolonumuz direk olarak 1 sayısını getirdik. Şimdi de bu tablo üzerinde yapılacak bir delete işlemi için bir trigger yazalım. Yazdığımız trigger, kaydı silmeyerek, SatildiMi kolonuna 0 değerini atasın. Yani silme işlemi yerine update işlemi yapacağız. Kitap tablosundan bir kayıt silelim. Görüldüğü gibi silme işlemi gerçekleşmedi onun yerine bizim yazmış olduğumuz trigger devreye girerek update yapmak istediğimiz işlemi gerçekleştirdi. Çok karmaşık olan Trigger konusunu sizler için 3 parça halinde sunmayı amaçladım. Umarım anlaşılmıştır. İyi kodlamalar..

  • SQL

    SQL Ders22- Trigger Kullanımı 1

    Öncelikle bu dersimiz için ürün ve sipariş adında iki tablo oluşturalım. Şimdi de bu iki tablo arasındaki ilişkiyi belirtelim. Bu ilişki Sipariş kolonundaki UrunID ile Urun tablosundaki UrunID alanına referans vereceğini belirtelim. Şimdi de Urun tablomuza birkaç veri girişi yapalım. Şimdi de Siparis tablosuna insert yapalım. Ancak siparişi verirken, girmiş olduğumuz sipariş miktarı kadar, Urun tablosunda o ürün için tutulan StokMiktarı’nın da azalmasını istiyoruz. Bunun için bir trigger yazmamız gerekiyor. Data girişinin yapıldığı anda bu trigger tetiklenmesi için After kullanmalıyız. Yazmış olduğumuz bu trigger ile sipariş tablosuna her insert girdiğimizde sipariş miktarı kadar stok miktarı azalma gösterecektir. Burada 50 adet sipariş verdik ve iki tabloda birbirinden etkilendiği için iki satır…

  • SQL

    SQL Ders21- Trigger Nedir

    Trigger’lar, tablo üzerinde tanımlanabilen ve bu tablo üzerinde bir işlem gerçekleştiğinde tetiklenen programlama ögeleridir. Çalışma mantığı, C#’daki event ile aynıdır. Öncelikle trigger’ları ikiye ayıralım: DDL ve DML trigger’lar. DML ve DDL konusunu bu yazımızda detaylıca göz atmak isterseniz buraya tıklayın. Bu dersimizde DML trigger üzerinde işlemler yapacağız. DML Trigger’ları da kendi içinde AFTER(veya FOR) ve INSTEAD OF olmak üzere ikiye ayrılırlar. (AFTER ve FOR aynı anlamdadır) AFTER : Yazdığımız trigger ‘after delete’ şeklindeyse, o tablo üzerinde data silindikten sonra bu trigger devreye girer. Bu trigger’lar tetiklendiğinde işlem gerçekleşmiş demektir. INSTEAD OF : Yazdığımız trigger ‘instead of delete’ şeklindeyse, o tablo üzerindeki kayıt silme işlemi yerine, bu trigger devreye girecektir. Bu…

  • SQL

    SQL Ders20- Stored Procedure Kullanımı

    Öncelikle yazdığımız stored procedure’ler veri tabanın neresinde saklanıyor bu konuyla girişimizi yapalım. Oluşturulan stored procedure’lar  hangi veri tabanında oluşturduysanız onun Programmability->Stored Procedures adı altında toplanıyor olacaktır. Daha önceden oluşturulan ve oluşacak olan stored procedure’ler burada depolanacaklardır. Eğer stored procedure’ları silerseniz burada göremeyeceksiniz. Haydi şimdi bir stored procedure oluşturalım. İlk olarak parametresiz bir procedure yazımının şablonunu verelim. İkinci olarak ise parametreli bir procedure yazımının şablonunu verelim. İlk olarak yine Northwind veritabanını kullanarak örneklerimi geliştiriyor olacağım. Northwind veri tabanında olan ürünlerimi listeleyen ama sadece id ve ürün ismini gösteren stored procedure oluşturalım. Create anahtar kelimesiyle başlar ve ardından bunun stored procedure olduğunu anlamak için proc anahtar kelimesi kullanılır ve bu procedure’ümüze bir…