Provided by:
manpages-tr_1.0.5.1-1.1_all 
İSİM
CREATE TRIGGER - yeni bir tetik tanımlar
KULLANIM
CREATE TRIGGER isim { BEFORE | AFTER } { olay [ OR ... ] }
ON tablo [ FOR [ EACH ] { ROW | STATEMENT } ]
EXECUTE PROCEDURE işlev_ismi ( argümanlar )
AÇIKLAMA
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.
PARAMETRELER
isim Yeni tetiği belirtecek isim. Bu isim, aynı tablodaki diğer
tetiklerin isimlerinden farklı olmalıdır.
BEFORE, AFTER
İşlevin olaydan önce mi sonra mı çağrılacağını belirler.
olay INSERT, UPDATE veya DELETE'den biri; tetiği çalıştıracak olayı
belirtmek için kullanılır. OR kullanarak çok sayıda olay
belirtilebilir.
tablo Tetiği içerecek tablonun ismi (şema nitelemeli olabilir).
FOR EACH ROW, FOR EACH STATEMENT
Tetik işlevinin tetikleyici olay tarafından her satır için bir
kere mi yoksa her SQL deyimi için bir kere mi çalıştırılacağını
belirler. Eğer hiçbiri belirtilmemişse, FOR EACH STATEMENT
öntanımlıdır.
iÅŸlev_ismi
Tetikle çalıştırılan, kullanıcı tarafından argümansız ve dönüş
türü trigger olarak bildirilmiş ve tanımlanmış bir işlev.
argümanlar
Tetik tarafından çalıştırıldığında işleve aktarılacak isteğe
bağlı argümanların virgülle ayrılmış listesi. Argümanlar dizge
sabitlerdir. Basit isimler ve sayısal sabitler de burada
yazılabilir, fakat her biri dizgeye dönüştürülecektir.
Tetikleyici işlev dilinin nasıl gerçeklendiğini incelemeniz ve
işlev içinde tetik argümanlarına nasıl erişildiğini öğrenmeniz
önerilir; normal işlev argümanlarından farklı ele alınıyor
olabilirler.
EK BİLGİ
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.
ÖRNEKLER
http://www.postgresql.org/docs/8.0/static/triggers.html adresinde
eksiksiz bir örnek bulacaksınız.
UYUMLULUK
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 belli sütunların güncellenmesiyle çalıtırılacak
tetiklere izin verir (AFTER UPDATE OF col1, col2 gibi).
· SQL:1999 "eski" ve "yeni" satırlar için ya da tetikleyen eylemin
(CREATE TRIGGER ... ON tabloismi REFERENCING OLD ROW AS birisim
NEW ROW AS yeniisim ... gibi) tanımında kullanmak için tablolara
takma isim tanımlamanıza izin verir. PostgreSQL tetik
işlevlerinin kullanıcının seçimine bağlı olarak herhangi bir
dilde yazılmasına izin verdiğinden veriye erişim seçilen dile
özel yollarla olur.
· PostgreSQL sadece tetikleyen eylem için kullanıcı tanımlı bir
işlevin çalıştırılmasına izin verir. SQL:1999 ise, tetiklenen
eylem olarak CREATE TABLE gibi başka SQL cümlelerinin
çalıştırılmasına izin verir. Bu sınırlamanın, istenen SQL
cümlelerini çalıştıracak kullanıcı tanımlı bir işlev oluşturarak
çevresinden dolanmak hiç de zor değildir.
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.
İLGİLİ BELGELER
CREATE FUNCTION [create_function(7)], ALTER TRIGGER [alter_trigger(7)],
DROP TRIGGER [drop_trigger(7)].
ÇEVİREN
Nilgün Belma Bugüner <nilgun (at) belgeler·gen·tr>, Nisan 2005