PostgreSQL

PostgreSQL INSERT/UPDATE/DELETE'den Sonra Tetik Oluşturma

PostgreSQL INSERT/UPDATE/DELETE'den Sonra Tetik Oluşturma
Tanımlanmış bir tabloda tanımlanmış bir değişiklik eylemi (SQL INSERT, UPDATE, DELETE veya TRUNCATE bildirimi) yürütüldüğünde, tetikleyici, otomatik olarak yürütülen bir dizi olaydır. Tetikleyiciler, iş kurallarını uygulamak, giriş bilgilerini doğrulamak ve bir denetim izini sürdürmek için kullanılabilir. SQL tetikleyicileri, SQL formatına göre uygulanır. Yerel değişkenleri tanımlamanıza, sürecin akışını bildirimlerle izlemenize, ifade sonuçlarını değişkenlere tahsis etmenize ve hataları işlemenize izin veren çeşitli programlama dillerinde kullanılan yapıları içerir. Ayrıca, tablo gibi bir şey için bir tetikleyici oluşturduğunuzda, tablo kaldırılır kaldırılmaz tetikleyici hemen kaldırılır. PostgreSQL Tetikleyicilerinin bu segment boyunca nasıl çalıştığına bakacağız.

Sözdizimi:

Bir tetikleyici oluşturmak için basit sözdizimi aşağıdadır:

>> CREATE TRIGGER trigger_name [ÖNCE|SONRA|BUNUN YERİNE] event-name ON table_name [ ----Trigger Logic ];

İşte yukarıdaki genel sorgunun açıklaması.

Tetik kavramını kısaca anlamak için uygulamalardan PostgreSQL kabuğunu başlatın. Başka bir sunucuda çalışmak istiyorsanız sunucuyu değiştirin veya klavyenizden enter tuşuna basın. Üzerinde çalışmak istediğiniz veritabanı adını ekleyin, aksi takdirde olduğu gibi bırakın ve enter'a dokunun. Gördüğünüz gibi, şu anda varsayılan olarak 5432 numaralı bağlantı noktasında çalışıyoruz; onu da değiştirebilirsin. Bundan sonra, başka bir kullanıcıyla çalışmak istiyorsanız Postgres dışında bir kullanıcı adı girin veya boş bırakın ve enter düğmesine basın. Artık komut kabuğunuz kullanıma hazır.

INSERT Komutu Üzerine TRIGGER

INSERT komutu bir tetik olayı olarak kullanıldığında bir tetikleyici örneğine bakalım. Bunun için iki yeni tablo oluşturmamız gerekiyor, e.g., “istihdam” ve “denetim”. “İstihdam” tablosu, belirli bir şirkete ait çalışanların kişisel kayıtlarını içerecek ve “denetim” tablosu, çalışanların şirkete ne zaman katıldığına ilişkin bilgileri içerecektir. Tabloları oluşturmak için sorgular aşağıda verilmiştir.

>> TABLO OLUŞTUR (ID INTEGER NOT NULL PRIMARY KEY, Adı VARCHAR(100) NOT NULL, Age VARCHAR(100) NULL DEĞİL, Maaş VARCHAR(100) NOT NULL );

>> TABLO denetimi CREATE( empid INTEGER NULL DEĞİL, giriş_tarihi VARCHAR(100) NOT NULL );

Tetikleyici çağrıldığında otomatik olarak yürütülecek veya çalışacak bir prosedür oluşturmanız gerekir. Bir sonraki CREATE TRIGGER komutunda kullanılacaktır. Aşağıdaki komuttan, bir tetikleyiciyi "$examp_table$" değişkeni olarak döndürecek bir "auditlogfunc()" prosedürü oluşturduğumuza dair bir fikir edinebilirsiniz. İşlev, BEGIN yan tümcesi ile başlar ve ardından INSERT ifadesi gelir. Bu INSERT ifadesi, yerleşik işlevi kullanarak “denetim” tablosuna otomatik kimlik ve geçerli saat-tarih ekler ve bu sonucu TRIGGER'a döndürür.

CREATE TRIGGER komutunu kullanarak bir TRIGGER oluşturma zamanı. “employ” tablosunda “emp_trig” isimli bir tetikleyici oluşturuyoruz. AFTER INSERT ON maddesi, bu tetikleyicinin yalnızca insert komutunun yürütülmesinden sonra çalışacağı anlamına gelir. HER SATIR İÇİN, her INSERT komutunun yürütülmesi üzerine, bu tetikleyici, hemen önce oluşturulan “auditlogfunc()” prosedürünü çağıracak ve yürütecektir.

>> HER SATIR İÇİN INSERT ON çalıştırmadan SONRA TRIGGER OLUŞTUR emp_trig YÜRÜTME PROSEDÜRÜ Auditlogfunc();

“İstihdam” tablosuna bazı veriler eklemenin zamanı geldi. Kabukta aşağıdaki INSERT komutunu yürütün.

>> istihdam(Kimlik, Ad, Yaş, Maaş) DEĞERLERİNE EKLE ('1', 'Paul', '34', '60000');

“İstihdam” tablosuna bir göz atın. Veriler INSERT komutuyla başarıyla eklendi.

Şimdi “denetim” tablosuna bir göz atın. Görüyorsunuz, aynı zamanda “emp_trig” ve auditlogfunc() tetikleyicisi nedeniyle güncellendi.

GÜNCELLEME Komutu Üzerine TRIGGER

Şimdi UPDATE komutunu tetik olayı olarak kullanan bir tetikleyici örneğine bakacağız. Resimde görüldüğü gibi “update” ismiyle tekrar yeni bir prosedür oluşturmamız gerekiyor. Bu prosedür aynı zamanda çağrı üzerine 'denetim' tablosuna kayıtlar ekleyecektir.

Şimdi, CREATE TRIGGER komutunu kullanarak “update_emp” adında yeni bir tetikleyici oluşturun. Bu, yalnızca tablodaki UPDATE sorgusunun yürütülmesinden sonra çalışacak ve “güncelleme” prosedürünü arayacaktır.

Kimliğini “2” olarak ayarlayarak “istihdam” tablosunu güncelleyin.

Değişiklikleri aşağıda eklendiği gibi görüntülemek için "istihdam" tablosunun kayıtlarını alın.

“Denetim” tablosunda da görebileceğiniz gibi, “istihdam” tablosu güncellendiğinden yeniden düzenlenmiştir.

DELETE Komutu Üzerine TRIGGER

GUI PostgreSQL üzerinde çalışmak için uygulamalardan pgAdmin 4'ü açın. "Test" şeması altında, bir tablo listesi keşfedeceksiniz. Yeni bir “emp” tablosu ve aynı “denetim” tablosu oluşturun.

Bu sefer tetik komutunu DELETE komutu ile çağıracağız. Aşağıda bazı kayıtlarla birlikte “emp” tablosu bulunmaktadır.

İşte önceki iki güncellemeyi içeren denetim tablosu.

Kayıtları “emp” tablosundan sildikten sonra “denetim” tablosuna eklemeyi tetiklemek için “Del()” adında bir prosedür oluşturun.

CREATE TRIGGER sorgusunu kullanarak bir "del_trig" tetikleyici oluşturun. Bu tetikleyici, “emp” tablosunda bazı DELETE yan tümcesi gerçekleştirildiğinde “Del” prosedürünü yürütecektir.

Çalışanın “id”sinin “5” olduğu “emp” tablosundan bir kaydı silelim. “emp” tablosundan bir satırı siler.

“emp” tablosunun kayıtlarını alın ve bir göz atın. “id”nin “5” olduğu satırın kaldırıldığını görebilirsiniz.

Şimdi “denetim” tablo kayıtlarını çıkarın ve “emp” tablosunda DELETE işlemi yapıldığı için güncellendiğini fark edeceksiniz.

Sonuç:

INSERT, UPDATE ve DELETE işlemlerini gerçekleştirirken TRIGGER kavramını anlamak için neredeyse tüm temel örnekleri yaptık.

How to reverse Mouse and Touchpads scrolling direction in Windows 10
Mouse and Touchpads not only make computing easy but more efficient and less time-consuming. We cannot imagine a life without these devices, but still...
How to change Mouse pointer and cursor size, color & scheme on Windows 10
The mouse pointer and cursor in Windows 10 are very important aspects of the operating system. This can be said for other operating systems as well, s...
Linux Oyunları Geliştirmek için Ücretsiz ve Açık Kaynaklı Oyun Motorları
Bu makale, Linux'ta 2D ve 3D oyunlar geliştirmek için kullanılabilecek ücretsiz ve açık kaynaklı oyun motorlarının bir listesini kapsayacaktır. Bu tür...