CREATE TRIGGER(7) | SQL - Dil Deyimleri | CREATE TRIGGER(7) |
CREATE TRIGGER - yeni bir tetik tanımlar
CREATE TRIGGER isim { BEFORE | AFTER } { olay [ OR ... ] } ON tablo [ FOR [ EACH ] { ROW | STATEMENT } ] EXECUTE PROCEDURE işlev_ismi ( argümanlar )
CREATE TRIGGER yeni bir tetik oluşturur. Tetik belirtilen tablo ile ilişkilendirilecek ve belli bir olay meydana geldiğinde işlev_ismi ile belirtilen işlevi çalıştıracaktır.
Tetiğin ya bir satır üzerinde işlem yapılmaya çalışılmadan önce (kısıtlar sınanmadan ve INSERT, UPDATE veya DELETE yapılmadan önce) ya da işlem tamamlandıktan sonra (kısıtlar sınandıktan ve INSERT, UPDATE veya DELETE tamamlandıktan sonra) çalışacağı belirtilebilir. Eğer tetik olaydan önce çalışırsa, geçerli satır için işlemi atlayabilir ya da veri girilen satır değişebilir (sadece INSERT ve UPDATE işlemleri için). Eğer tetik olaydan sonra çalışırsa, tüm değişiklikler, son veri girme, güncelleme veya silme işlemi tetiğe görünür olur.
FOR EACH ROW imli bir tetik işlemi değiştiren her satır için bir defa çağrılır. Örneğin, 10 satırı etkileyen bir DELETE, her satır silinişinde bir kere olmak üzere 10 ayrı defa ON DELETE tetiğinin çağrılmasına sebep olur. Tersine, FOR EACH STATEMENT imli bir tetik belirtilen bir işlem için işlemin kaç satırı etkilediğinden bağımsız olarak, sadece bir defa çalıştırılır (hatta, işlem hiçbir satırı değiştirmese bile tetik yine de çalıştırılacaktır).
Eğer aynı olay için aynı türden çok sayıda tetik tanımlanmışsa, bunlar isimlerine göre alfabetik sırayla çalıştırılırlar.
SELECT herhangi bir satırı değiştirmediğinden, SELECT tetikleri oluşturamazsınız. Kurallar ve sanal tablolar böyle durumlarda daha uygundur.
Tetikler hakkında daha fazla bilgi edinmek için
http://www.postgresql.org/docs/8.0/static/triggers.html adresine
bakınız.
Bir tablo içinde bir tetik oluşturmak için, kullanıcı tablo üzerinde TRIGGER yetkisine sahip olmalıdır.
7.3 öncesi PostgreSQL sürümlerinde, işlevin dönüş türü olarak trigger değil, opaque bildiriliyordu. Eski sürüme ait döküm dosyalarını desteklemek için, CREATE TRIGGER opaque türünde değer döndüren işlevleri kabul edecek, ama işlevin bildirilen dönüş türünün trigger olarak değiştirilmesini belirten bir uyarı alacaksınız.
Bir tetiği silmek için DROP TRIGGER [drop_trigger(7)] kullanın.
http://www.postgresql.org/docs/8.0/static/triggers.html adresinde eksiksiz bir örnek bulacaksınız.
CREATE TRIGGER cümlesinin PostgreSQL gerçeklenimi SQL:1999 standardının bir alt kümesini içerir. (SQL-92'de tetikler için bir madde yoktur.) Mevcut olmayan işlevsellik şöyle sıralanabilir:
SQL:1999, çok sayıda tetiğin oluşturulma zamanı sırasına göre çalıştırılmasına izin verir. PostgreSQL ise çalışılması daha uygun olan isim sıralamasını kullanır.
CREATE FUNCTION [create_function(7)], ALTER TRIGGER [alter_trigger(7)], DROP TRIGGER [drop_trigger(7)].
Nilgün Belma Bugüner <nilgun (at) belgeler·gen·tr>, Nisan 2005
PostgreSQL |