VERİ TABANI ve YÖNETİMİ

Slides:



Advertisements
Benzer bir sunumlar
8. SINIF 3. ÜNİTE BİLGİ YARIŞMASI
Advertisements

SQL - Structured Query Language
Prof.Dr.Şaban EREN Yasar Üniversitesi Fen-Edebiyat Fakültesi
Tablo oluşturma İlk olarak tabloları oluşturmamız gerekli..
NOKTA, DOĞRU, DOĞRU PARÇASI, IŞIN, DÜZLEMDEKİ DOĞRULAR
Birlikler ve onluklar Aşağıdaki tabloyu inceleyerek, sonuçları üzerinde konuşalım.
Veri ve Veri Yapıları Genel olarak bilgisayarlar.
Microsoft Danışman Öğrenci
Verimli Ders Çalışma Teknikleri.
VERİ TABANI ve YÖNETİMİ
İkili Arama Ağaçları (Binary Search Trees) BST
Üsküdar Halk Eğitim Merkezi Eczane Çalışanlarının Eğitimi
Meslektaşlarımızın Ücret Almadan Hizmete Devam Etmesi. Haksız Rekabette Sorunlar.
Meslektaşlarımızın Ücret Almadan Hizmete Devam Etmesi. Haksız Rekabette Sorunlar.
Veritabanı Yönetim Sistemleri Hızlı ve Kısa Giriş
Transaction.
ARALARINDA ASAL SAYILAR
Gün Kitabın Adı ve Yazarı Okuduğu sayfa sayısı
Veri Tabanı Yönetim Sistemleri
Veri Tabanı Yönetim Sistemleri
Tetikleyici. Nedir? Bir tablo üzerinde Ekleme silme ve güncellemeye bağlı olarak tetiklenip çalışan SQL kodlarıdır. Genel amacı veri bütünlüğünü korumaktır.
SQL (STRUCTURED QUERY LANGUAGE)
VERİ TABANI VE YÖNETİM SİSTEMLERİ  Birincil Anahtar Türleri  Access Veri Tabanında Bulunan İlişkiler  İlişkileri Tanımlama Bir – Çok İlişkisi Çok –
Veri Bütünlüğü Sibel SOMYÜREK.
VERİ TABANI ve YÖNETİMİ
VIEW (BAKIŞ) OLUŞTURMA
TÜRKİYE İSTATİSTİK KURUMU İzmir Bölge Müdürlüğü 1/25.
ÖRNEKLER. musteri Id adi soyadi mus_satis Id barkod adet Urunlar barkod urun_adi kodu fiyati Stok_hareket tarih barkod gelen giden.
VERİTABANI ve YÖNETİMİ
HABTEKUS' HABTEKUS'08 3.
BTP102 VERİTABANI YÖNETİM SİSTEMLERİ 1
Akış Kontrol Mekanizmaları
Ek-2 Örnekler.
VERİTABANI ve YÖNETİMİ
Diferansiyel Denklemler
Chapter 11: Exception Handling
Veritabanı Yönetim Sistemleri-I
SÜLEYMAN DEMİREL ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
VERİ TABANI ve YÖNETİMİ
SQL Komutları (2) Uzm. Murat YAZICI.
RAISE RECORD/CURSOR TRIGGER
1 (2009 OCAK-ARALIK) TAHAKKUK ARTIŞ ORANLARI. 2 VERGİ GELİRLERİ TOPLAMIDA TAHAKKUK ARTIŞ ORANLARI ( OCAK-ARLIK/2009 )
İSMİN HALLERİ.
Toplama Yapalım Hikmet Sırma 1-A sınıfı.
Bilgisayar Mühendisliği Bölümü
CEBİRSEL İFADELERİ ÇARPANLARINA AYIRMA
BTP102 VERİTABANI YÖNETİM SİSTEMLERİ 1
ÖĞR. GRV. Ş.ENGIN ŞAHİN BİLGİ VE İLETİŞİM TEKNOLOJİSİ.
HAFTA 6-7.
SQL’ e Giriş Uzm. Murat YAZICI.
Veritabanı Kavramları
VERİTABANI SİSTEMLERİ
GÜVENL İ K. Sunucu Seviyesinde Güvenlik Master Veritabanı (Kullanıcının gerekli yetkileri var mı?) Authentication Mod ◦ Windows Authentication Mod  Varsayılan.
UNV13107 TEMEL BİLGİ TEKNOLOJİSİ KULLANIMI. Veri tabanı Bilgisayar ortamında saklanan düzenli verilerdir. Bilgisayar ve ağ ortamındaki bilginin temel.
T-SQL 3.K ONU Tablo Tipi Değişkenler. T ABLO TIPI DEĞIŞKENLER KULLANMAK T-SQL de dizi tanımlama nasıl yapılır? Bu sorunun cevabı olarak tablo tipi değişkenleri.
Öğretim Görevlisi Alper Talha Karadeniz Veri Tabanı 2
Veri Tabanı Yönetimi Dersi 1. Laboratuvarı
Bilgisayar Mühendisliği Bölümü
VIEW lerle çalışmak 11.BÖLÜM.
TETİKLEYİCİ ( Trigger)
Tablo Tipi Değişkenler
TETİKLEYİCİLER ve HATA KONTROLÜ
VERİ TABANI SQL (STRUCTURED QUERY LANGUAGE) SAVAŞ TUNÇER.
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
DML ile veri ekleme, silme ve değiştirme
Öğretim Görevlisi Alper Talha Karadeniz Veri Tabanı 1
Stored Procedure Öğr.Gör.Metin Akbulut.
SQL Server - Triggers.
SQL Server - Stored Procedures
Transaction.
Sunum transkripti:

VERİ TABANI ve YÖNETİMİ Celal Bayar Üniversitesi Yazılım Mühendisliği Bölümü

TETİKLEYİCİ (TRIGGER) BİL 301 - Veri Tabanı ve Yönetimi BÖLÜM -12- TETİKLEYİCİ (TRIGGER)

Giriş Trigger’lar Trigger’lar Ne Zaman Kullanılmalıdır? 3 BİL 301 - Veri Tabanı ve Yönetimi Giriş Trigger’lar Trigger’lar Ne Zaman Kullanılmalıdır? Klasik Trigger’ların Özellikleri Trigger’lar Nasıl Çalışır? Trigger Oluşturmak Bu hafta veritabanı yönetim sistemleri için son derece önemli olan ve transaction’ lardan sonra gelen Trigger’ lar konusunu anlatacağız. 3

4 BİL 301 - Veri Tabanı ve Yönetimi 12.1. Trigger’lar Trigger yani tetikleyici, ilişkisel veritabanı yönetim sistemlerinde bir tabloda belirli olaylar meydana geldiği zaman yani ekleme, güncelleme, silme işlemlerinden biri gerçekleşmeden önce veya sonra çalışan ve belirli işlemleri kodlandığı şekilde yerine getiren yordamdır. Tetikler veritabanında yapılan değişikliklerle birlikte otomatik olarak çalışan prosedürel program parçacıklarıdır. EN SON SÖYLE: Tetiklerin profesyonel olmayan kişiler tarafından kullanılması genellikle tavsiye edilmez. Ancak ilişkisel veritabanlarında performansı artırıcı etkisi nedeniyle olmazsa olmaz yordamlardır. 4

5 BİL 301 - Veri Tabanı ve Yönetimi 12.1. Trigger’lar (devam…) Trigger’lar, veri değişiminin hemen ardından log dosyalar üzerinden otomatik olarak devreye giren özel bir Stored Procedure’dür. Genellikle karmaşık iş kurallarını gerçekleştirmek için veya basamaklı veri bütünlüğünü programlamak için kullanılırlar. BİRİNCİ MADDEDEN SONRA: Sadece güncelleme, ekleme ve silme işlemlerinden sonra devreye girebilmek üzere programlanabilirler. 5

12.2. Trigger’lar Ne Zaman Kullanılmalıdır? 6 BİL 301 - Veri Tabanı ve Yönetimi 12.2. Trigger’lar Ne Zaman Kullanılmalıdır? Trigger’lar aşağıdaki amaçlara yönelik kullanılırlar. Değişiklikleri takip etmek için: Kritik kayıtlar üzerinde değişiklik yapan kişiler ve değişiklik miktarlarını ya da kayıtlarının takibini tutmak için kullanılırlar. Birincil anahtar üretmek için: IDENTITY( ) fonksiyonu birincil anahtar olarak sadece sayı üretebilmektedir. Bazı durumlarda birincil anahtarın belli harf ve rakamlardan oluşması gerekebilir. Böyle durumlarda yine trigger’lara başvurulabilmektedir. 6

12.2. Trigger’lar Ne Zaman Kullanılmalıdır? (devam) 7 BİL 301 - Veri Tabanı ve Yönetimi 12.2. Trigger’lar Ne Zaman Kullanılmalıdır? (devam) Trigger’lar aşağıdaki amaçlara yönelik kullanılırlar. Karmaşık iş kurallarını gerçeklemek için: Bazen uygulama veritabanının dışında bir veritabanına karşı, yabancı anahtar geçerliliğini denetlemek gerekebilmektedir. Bu durumda sadece veritabanı içindeki işler denetlenebilmektedir. Fakat trigger’ lar ile diğer veritabanları da denetlenebilmektedir. Mail atmak gibi işleri otomatikleştirmek için: Örneğin herhangi bir sipariş verildiğinde müşteriye bilgilendirme mail göndermek için kullanılabilmektedir. 7

12.2. Trigger’lar Ne Zaman Kullanılmalıdır? (devam) 8 BİL 301 - Veri Tabanı ve Yönetimi 12.2. Trigger’lar Ne Zaman Kullanılmalıdır? (devam) Bunların dışında; Standart hata mesajlarının dışında hata mesajı vermek için Veritabanı erişimlerini takibe almak için Yeni nesne oluşturma işlemlerini, sunucu veritabanlarının tutarlılıklarını sağlamak için Nesne değişikliklerini takip etmek ve engellemek için kullanılabilmektedirler. 8

12.3. Klasik Trigger’ların Özellikleri 9 BİL 301 - Veri Tabanı ve Yönetimi 12.3. Klasik Trigger’ların Özellikleri Bir trigger, birden fazla olayı gerçekleştirebilmektedir. Örneğin bir tabloya kayıt eklendiğinde devreye giren bir trigger bu kayıtları başka bir yere de ekledikten sonra başka bir tablo üzerinde de güncellemeler yapabilmektedir. Trigger, geçici tablo yada sistem tablosu oluşturamaz ama bu türden tablolara erişebilmektedir. İKİNCİ MADDEDEN SONRA: Diğer yandan bir trigger, birden fazla olay tarafından tetiklenebilmektedir. Yani hem ekleme hem de güncelleme işlemi için veya her ikisi için devreye girmek üzere programlanabilmektedir. 9

12.3. Klasik Trigger’ların Özellikleri 10 BİL 301 - Veri Tabanı ve Yönetimi 12.3. Klasik Trigger’ların Özellikleri Temel olarak iki farklı trigger çeşidi vardır. AFTER Trigger AFTER trigger’ı sadece tablolar üzerinde tanımlanabilmektedir. INSTEAD OF Trigger INSTEAD OF trigger’ı hem tablolar hem de view’lar üstünde tanımlanmaktadır. EN SON SÖYLE: İkisi arasındaki en önemli fark, AFTER trigger’ını devreye sokan olay olmuş kabul edilerek akışı trigger’a bırakırken, INSTEAD OF trigger’ı istenilen işlemi gerçekleştirmez. Sadece sözde tablolara kaydetmekle yetinir. Ayrıca basamaklı güncelleme ve silme işlemine destek vermez. 10

12.3. Klasik Trigger’ların Özellikleri 11 BİL 301 - Veri Tabanı ve Yönetimi 12.3. Klasik Trigger’ların Özellikleri Bu iki trigger’ ın karşılaştırılması tabloda verilmektedir. 11

12.4. Trigger’lar Nasıl Çalışır? BİL 301 - Veri Tabanı ve Yönetimi 12.4. Trigger’lar Nasıl Çalışır? Trigger’ı tetikleyen bir olayla karşılaşıldığında işlem ile trigger ikisi birlikte bir transaction bloğu olarak ele alınır. Trigger’lar çalıştığı zaman INSERTED ve DELETED tablolarını kullanırlar. Bu tabloların her ikisi de ana tabloyla yani trigger’ın tetiklediği tabloyla eşdeğer alanlara sahiptir. Bu tablolar mantıksal tablo şeklinde RAM’de bulunurlar. Gerçek tabloya bir kayıt eklendiği zaman trigger çalışırsa bu kayıt aynı zamanda Inserted tablosuna da eklenir. İstenildiğinde bu tablodaki kayıtlara erişilebilmektedir. BİRİNCİ MADDEDEN SONRA: Yani trigger, kendisini çağıran işlemi onaylamak anlamında hiçbir işlem yapmayabilir yada ROLLBACK ile geçersiz kılınabilmektedir. 12

12.4. Trigger’lar Nasıl Çalışır? 13 BİL 301 - Veri Tabanı ve Yönetimi 12.4. Trigger’lar Nasıl Çalışır? Tablodan bir kayıt silindiğinde, silinen kayıt DELETED tablosunda saklanır. UPDATE işlemi ise, DELETE ve hemen ardından yapılmış olan bir INSERT işlemi olarak ele alınır. Bir kayıt UPDATE edildiğinde orijinal kayıt DELETED tablosuna eklenir. Değişen kayıtta INSERTED tablosuna eklenir. 13

14 BİL 301 - Veri Tabanı ve Yönetimi 12.5. Trigger Oluşturmak Genel olarak bir trigger oluşturma ifadesi şu şekildedir. CREATE TRIGGER trigger_adı ON tablo_adı {FOR AFTER/INSTEAT OF} {INSERT/UPDATE/DELETE} AS Çalışacak olan SQL ifadeleri 14

12.5. Trigger Oluşturmak (devam) 15 BİL 301 - Veri Tabanı ve Yönetimi 12.5. Trigger Oluşturmak (devam) Örnek: Bir satış yapıldığı zaman stokta eğer ürün varsa otomatik olarak stoktan düşen, yoksa uyarı mesajı veren bir trigger yazalım. Bu işlem için öncelikle aşağıdaki tabloları oluşturmamız gerekir. Müşteriler Kitaplar Satışlar Bu tablolara ait nitelikler ve SQL ifadeleri şöyledir. 15

12.5. Trigger Oluşturmak (devam) 16 BİL 301 - Veri Tabanı ve Yönetimi 12.5. Trigger Oluşturmak (devam) Müşteriler tablosu ve nitelikleri aşağıdaki SQL kodu ile birlikte verilmektedir. Bu kodları SQL Server’da bir Query oluşturarak yazıp derleriz. 16

12.5. Trigger Oluşturmak (devam) 17 BİL 301 - Veri Tabanı ve Yönetimi 12.5. Trigger Oluşturmak (devam) Ürünler tablosu ve nitelikleri aşağıdaki SQL kodu ile birlikte verilmektedir. Bu kodları SQL Server’da bir Query oluşturarak yazıp derleriz. 17

12.5. Trigger Oluşturmak (devam) 18 BİL 301 - Veri Tabanı ve Yönetimi 12.5. Trigger Oluşturmak (devam) Son olarak satışlar tablosu ve nitelikleri aşağıdaki SQL kodu ile birlikte verilmektedir. Bu kodları SQL Server’da bir Query oluşturarak yazıp derleriz. 18

12.5. Trigger Oluşturmak (devam) 19 BİL 301 - Veri Tabanı ve Yönetimi 12.5. Trigger Oluşturmak (devam) Oluşturduğumuz bu tablolara aşağıdaki gibi kayıtlar ekleyelim. 19

12.5. Trigger Oluşturmak (devam) 20 BİL 301 - Veri Tabanı ve Yönetimi 12.5. Trigger Oluşturmak (devam) Tüm gerekli işlemlerin ardından herhangi bir satış yapıldığında stok miktarına bağlı olarak gerekli işlemleri yapacak olan trigger’ımız şöyle olacaktır. Birinci kısımda bir trigger oluşturmak için CREATER TRIGGER komutunu ve bu trigger’ın hangi tablo üzerinde işlem yapacağını, ardından FOR INSERT ile bu trigger’ın bir ekleme işleminin ardından çalışacağını belirttik. DECLARE komutu ile @say değişkenini tanımladık, ardından ürün sayısını bulduktan sonra bunu @say değişkenine atadık. Ürünler ve daha önce anlatmış olduğumuz Inserted tablosunu kullanarak her iki tabloyu birleştirdik. Bu işlemle trigger tetiklendiği anda Inserted tablosunun da değiştiği görülmektedir. Ayrıca istenilen ürün adedinin stokta yeterli miktarda olup olmadığı da kontrol edilmektedir. Eğer stokta yeteri kadar ürün varsa trigger’ ımız bir transaction bloğu olarak ele alınıp, sipariş edilen ürün adedi stoktan düşülmektedir. Bu işlem aynı zamanda Inserted tablosuna da yansıtılmaktadır. Herhangi bir sorun ile karşılaşıldığında tüm işlemler sondan başa doğru da alınabilmektedir. 20

12.5. Trigger Oluşturmak (devam) 21 BİL 301 - Veri Tabanı ve Yönetimi 12.5. Trigger Oluşturmak (devam) Burada müşteri numarası 1 olan kişi, 2 numaralı üründen 1 adet sipariş vermektedir. SQL ifadesi çalıştırıldığında önceki ve sonraki kayıtların durumu aşağıdaki gibi olacaktır. 21

12.5. Trigger Oluşturmak (devam) 22 BİL 301 - Veri Tabanı ve Yönetimi 12.5. Trigger Oluşturmak (devam) Benzer şekilde satışlar tablosunda bir kayıt silindiğinde (iptal edildiğinde) çalışacak olan bir DELETE trigger’ı yazalım. DELETE trigger’ı için SQL ifademiz şöyle olacaktır. 22

12.5. Trigger Oluşturmak (devam) 23 BİL 301 - Veri Tabanı ve Yönetimi 12.5. Trigger Oluşturmak (devam) Bu trigger ise satış sonrası fatura kesildikten sonra teslim edilen ürünleri silmek için kullanılabilir. Silinen kayıtlar daha önceden bahsettiğimiz gibi DELETED tablosunda tutulmaktadır. Ayrıca bu trigger iptal edilen (yani ürünler tablosundan silinen) ürün adedini tekrar ürünler tablosuna eklemektedir. 23

12.5. Trigger Oluşturmak (devam) 24 BİL 301 - Veri Tabanı ve Yönetimi 12.5. Trigger Oluşturmak (devam) Bu trigger’ıda çalıştırmak için SQL ifademiz şöyle olacaktır. Fişno su 2 olan ürün bilgilerine bakılarak adedi kadar satışlar tablosundan ürün silinir. 24

12.5. Trigger Oluşturmak (devam) 25 BİL 301 - Veri Tabanı ve Yönetimi 12.5. Trigger Oluşturmak (devam) Benzer şekilde UPDATE trigger’ı ise aşağıdaki gibi olacaktır. Burada DELETED olarak adlandırılan tablo, kayıt değiştirilmeden önce Satışlar tablosunda değiştirilmekte olan kayıttan oluşan tablonun tetikleyicide kullanılan mantıksal adıdır. INSERTED ise ayni satırın kayıt değiştirildikten sonra elde edilen satırdan oluşan tablonun tetikleyicide kullanılan mantıksal adıdır. Bunun nedeni aslında UPDATE bir DELETE ve INSERT işleminin ard arda uygulanması gibi düşünülmelidir. 25

12.5. Trigger Oluşturmak (devam) 26 BİL 301 - Veri Tabanı ve Yönetimi 12.5. Trigger Oluşturmak (devam) Bir INSERT, UPDATE veya DELETE işlemi bir tabloya uygulandığında bu tablo üzerinde sırasıyla bir Instead Of INSERT, Instead Of UPDATE veya Instead Of DELETE Trigger’ı varsa bu işlem tablo üzerinde gerçekleşmez. Onun yerine tetikleyici içinde yazılı kodlar yapılır. Bu işlemleri gösterebilmek için bir tablo oluşturalım. Bu tabloya ait nitelikler aşağıda verilmektedir. 26

12.5. Trigger Oluşturmak (devam) 27 BİL 301 - Veri Tabanı ve Yönetimi 12.5. Trigger Oluşturmak (devam) Instead Of DELETE örneğine ait trigger aşağıda verilmektedir. Herhangi bir silme işlemi denendiğinde bu silme işleminin ne zaman denendiğini belirten bir trigger oluşturalım. 27

12.5. Trigger Oluşturmak (devam) 28 BİL 301 - Veri Tabanı ve Yönetimi 12.5. Trigger Oluşturmak (devam) Bu denemeye ilişkin SQL ifadeleri ve sonuçları aşağıda verilmektedir. 28

12.5. Trigger Oluşturmak (devam) 29 BİL 301 - Veri Tabanı ve Yönetimi 12.5. Trigger Oluşturmak (devam) Bütün INSTEAD OF trigger’ ları benzer şekilde; Ekleme için Instead Of INSERT, Güncelleme için Instead Of UPDATE, Silme işlemi için ise Instead Of DELETE olarak oluşturulmaktadır. 29