PostgreSQL Tetikleyiciler: Örnekle Oluşturun, Listeleyin ve Bırakın
⚡ Akıllı Özet
PostgreSQL Tetikleyiciler, bir tabloda INSERT, UPDATE veya DELETE olayı gerçekleştiğinde otomatik olarak çalışan fonksiyonlardır ve veritabanının ek uygulama koduna gerek kalmadan kuralları uygulamasına, değişiklikleri kaydetmesine ve verileri denetlemesine olanak tanır.

Tetikleyici Nedir? PostgreSQL?
A PostgreSQL Tetik Tetikleyici, bir veritabanı nesnesinde (örneğin bir tabloda) bir veritabanı olayı meydana geldiğinde otomatik olarak tetiklenen bir fonksiyondur. Tetikleyiciyi etkinleştirebilecek veritabanı olaylarına örnek olarak INSERT, UPDATE, DELETE vb. verilebilir. Ayrıca, bir tablo için tetikleyici oluşturduğunuzda, o tablo silindiğinde tetikleyici otomatik olarak kaldırılır.
Trigger nasıl kullanılır? PostgreSQL?
Bir tetikleyici, oluşturulurken FOR EACH ROW operatörü ile işaretlenebilir. Bu tür bir tetikleyici, işlem tarafından değiştirilen her satır için bir kez çağrılır. Bir tetikleyici, oluşturulurken FOR EACH STATEMENT operatörü ile de işaretlenebilir. Bu tetikleyici, yalnızca belirli bir işlem için bir kez çalıştırılır.
PostgreSQL Tetikleyici oluşturma
Trigger oluşturmak için CREATE TRIGGER fonksiyonunu kullanıyoruz. İşte işlevin sözdizimi:
CREATE TRIGGER trigger-name [BEFORE|AFTER|INSTEAD OF] event-name ON table-name [ -- Trigger logic ];
Tetikleyici adı tetikleyicinin adıdır.
BEFORE, AFTER ve INSTEAD OF tetikleyicinin ne zaman çağrılacağını belirleyen anahtar kelimelerdir.
Etkinlik adı, tetikleyicinin çağrılmasına neden olacak olayın adıdır. Bu olabilir INSERT, GÜNCELLEME, SİL vb.
Tablo adı, tetikleyicinin oluşturulacağı tablonun adıdır.
Eğer INSERT işlemi için tetik oluşturulacaksa ON sütun adı parametresini eklemeliyiz.
Aşağıdaki sözdizimi bunu göstermektedir:
CREATE TRIGGER trigger-name AFTER INSERT ON column-name ON table-name [ -- Trigger logic ];
PostgreSQL Tetikleyici Örneği Oluştur
Aşağıda verilen Fiyat tablosunu kullanacağız:
Fiyat:
Fiyat tablosunda yapılan değişiklikleri kaydedeceğimiz başka bir tablo olan Price_Audits'i oluşturalım:
CREATE TABLE Price_Audits ( book_id INT NOT NULL, entry_date text NOT NULL );
Artık denetim işlevi adında yeni bir işlev tanımlayabiliriz:
CREATE OR REPLACE FUNCTION auditfunc() RETURNS TRIGGER AS $my_table$ BEGIN INSERT INTO Price_Audits(book_id, entry_date) VALUES (new.ID, current_timestamp); RETURN NEW; END; $my_table$ LANGUAGE plpgsql;
Yukarıdaki işlev, yeni satır kimliğini ve kaydın oluşturulduğu zamanı içeren Price_Audits tablosuna bir kayıt ekleyecektir.
Tetikleyici fonksiyonumuzu oluşturduğumuza göre, bunu Fiyat tablosuna bağlamamız gerekiyor. Tetikleyiciye price_trigger adını vereceğiz. Yeni bir kayıt oluşturulmadan önce, değişiklikleri kaydetmek için tetikleyici fonksiyon otomatik olarak çağrılacaktır. İşte tetikleyici:
CREATE TRIGGER price_trigger AFTER INSERT ON Price FOR EACH ROW EXECUTE PROCEDURE auditfunc();
Fiyat tablosuna yeni bir kayıt ekleyelim:
INSERT INTO Price VALUES (3, 400);
Şimdi Fiyat tablosuna bir kayıt eklediğimize göre, oluşturduğumuz tetikleyici nedeniyle Fiyat_Denetimleri tablosuna da bir kayıt eklenmelidir. Bunu kontrol edelim:
SELECT * FROM Price_Audits;
Aşağıdakini döndürecektir:
Tetik başarıyla çalıştı.
PostgreSQL Liste Tetikleyicisi
Oluşturduğunuz tüm tetikleyiciler PostgreSQL pg_trigger tablosunda saklanır. Sahip olduğunuz tetikleyicilerin listesini görmek için veritabanıSELECT komutunu aşağıda gösterildiği gibi çalıştırarak tabloyu sorgulayın:
SELECT tgname FROM pg_trigger;
Bu, aşağıdakileri döndürür:
pg_trigger tablosunun tgname sütunu tetikleyicinin adını belirtir.
PostgreSQL Düşürme Tetikleyicisi
Bir tetikleyiciye artık ihtiyaç duyulmadığında, onu aynı kolaylıkla kaldırabilirsiniz. Bir tetikleyiciyi silmek için... PostgreSQL tetikleyiciyi kullanmak için DROP TRIGGER ifadesini aşağıdaki sözdizimiyle kullanırız:
DROP TRIGGER [IF EXISTS] trigger-name
ON table-name [ CASCADE | RESTRICT ];
Tetikleyici adı parametresi, silinecek tetikleyicinin adını belirtir.
Tablo adı, tetikleyicinin silineceği tablonun adını belirtir.
IF EXISTS yan tümcesi var olan bir tetikleyiciyi silmeye çalışır. Var olmayan bir tetikleyiciyi IF EXISTS deyimini kullanmadan silmeye çalışırsanız hata alırsınız.
CASCADE seçeneği, tetikleyiciye bağlı olan tüm nesneleri otomatik olarak bırakmanıza yardımcı olacaktır.
RESTRICT seçeneğini kullanırsanız nesneler ona bağlıysa tetikleyici silinmeyecektir.
Örneğin:
Company tablosuna example_trigger adlı tetikleyiciyi bırakmak için aşağıdaki komutu çalıştırın:
DROP TRIGGER example_trigger IF EXISTS
ON Company;
pgAdmin'i kullanma
Şimdi bu üç işlemin pgAdmin kullanılarak nasıl gerçekleştirildiğine bakalım.
Tetikleyici Nasıl Oluşturulur PostgreSQL pgAdmin'i kullanma
İşte tetikleyici oluşturmanın yolu: PostgreSQL pgAdmin'i kullanarak:
Adım 1) pgAdmin hesabınıza giriş yapın
pgAdmin'i açın ve giriş bilgilerinizle hesabınıza giriş yapın.
Adım 2) Demo Veritabanı Oluşturun
- Soldaki gezinme çubuğundan Veritabanları'na tıklayın.
- Demo'yu tıklayın.
Adım 3) Sorguyu Yazın
Price_Audits tablosunu oluşturmak için düzenleyiciye şu sorguyu yazın:
CREATE TABLE Price_Audits ( book_id INT NOT NULL, entry_date text NOT NULL )
Adım 4) Sorguyu Yürütün
Yürüt düğmesine tıklayın.
Adım 5) Çalıştırın Code denetim fonksiyonu için
Auditfunc fonksiyonunu tanımlamak için aşağıdaki kodu çalıştırın:
CREATE OR REPLACE FUNCTION auditfunc() RETURNS TRIGGER AS $my_table$ BEGIN INSERT INTO Price_Audits(book_id, entry_date) VALUES (new.ID, current_timestamp); RETURN NEW; END; $my_table$ LANGUAGE plpgsql
Adım 6) Çalıştırın Code tetikleyici oluşturmak
Tetikleyici price_trigger'ı oluşturmak için aşağıdaki kodu çalıştırın:
CREATE TRIGGER price_trigger AFTER INSERT ON Price FOR EACH ROW EXECUTE PROCEDURE auditfunc()
Adım 7) Yeni bir kayıt ekleyin
- Fiyat tablosuna yeni bir kayıt eklemek için aşağıdaki komutu çalıştırın:
INSERT INTO Price VALUES (3, 400)
- Price_Audits tablosuna bir kayıt eklenip eklenmediğini kontrol etmek için aşağıdaki komutu çalıştırın:
SELECT * FROM Price_Audits
Bu, aşağıdakileri döndürmelidir:
Adım 8) Tablo içeriğini kontrol edin
Şimdi de Price_Audits tablosunun içeriğini inceleyelim.
pgAdmin kullanarak Tetikleyicileri Listeleme
) 1 Adım Veritabanınızdaki tetikleyicileri kontrol etmek için aşağıdaki komutu çalıştırın:
SELECT tgname FROM pg_trigger
Bu, aşağıdakileri döndürür:
Damlaping pgAdmin kullanarak tetikleyiciler
Company tablosuna example_trigger adlı tetikleyiciyi bırakmak için aşağıdaki komutu çalıştırın:
DROP TRIGGER example_trigger IF EXISTS
ON Company
Bu Eğitimde kullanılan Veritabanını İndirin







