Provided by:
manpages-tr_1.0.5.1-2_all 
ISIM
CREATE TRIGGER - yeni bir tetik tanimlar
KULLANIM
CREATE TRIGGER isim { BEFORE | AFTER } { olay [ OR ... ] }
ON tablo [ FOR [ EACH ] { ROW | STATEMENT } ]
EXECUTE PROCEDURE i,slev_ismi ( arg"umanlar )
A,CIKLAMA
CREATE TRIGGER yeni bir tetik olusturur. Tetik belirtilen tablo ile
iliskilendirilecek ve belli bir olay meydana geldiginde i,slev_ismi ile
belirtilen islevi calistiracaktir.
Tetigin ya bir satir uzerinde islem yapilmaya calisilmadan once
(kisitlar sinanmadan ve INSERT, UPDATE veya DELETE yapilmadan once) ya
da islem tamamlandiktan sonra (kisitlar sinandiktan ve INSERT, UPDATE
veya DELETE tamamlandiktan sonra) calisacagi belirtilebilir. Eger tetik
olaydan once calisirsa, gecerli satir icin islemi atlayabilir ya da
veri girilen satir degisebilir (sadece INSERT ve UPDATE islemleri
icin). Eger tetik olaydan sonra calisirsa, tum degisiklikler, son veri
girme, guncelleme veya silme islemi tetige gorunur olur.
FOR EACH ROW imli bir tetik islemi degistiren her satir icin bir defa
cagrilir. Ornegin, 10 satiri etkileyen bir DELETE, her satir
silinisinde bir kere olmak uzere 10 ayri defa ON DELETE tetiginin
cagrilmasina sebep olur. Tersine, FOR EACH STATEMENT imli bir tetik
belirtilen bir islem icin islemin kac satiri etkilediginden bagimsiz
olarak, sadece bir defa calistirilir (hatta, islem hicbir satiri
degistirmese bile tetik yine de calistirilacaktir).
Eger ayni olay icin ayni turden cok sayida tetik tanimlanmissa, bunlar
isimlerine gore alfabetik sirayla calistirilirlar.
SELECT herhangi bir satiri degistirmediginden, SELECT tetikleri
olusturamazsiniz. Kurallar ve sanal tablolar boyle durumlarda daha
uygundur.
Tetikler hakkinda daha fazla bilgi edinmek icin
http://www.postgresql.org/docs/8.0/static/triggers.html adresine
bakiniz.
PARAMETRELER
isim Yeni tetigi belirtecek isim. Bu isim, ayni tablodaki diger
tetiklerin isimlerinden farkli olmalidir.
BEFORE, AFTER
Islevin olaydan once mi sonra mi cagrilacagini belirler.
olay INSERT, UPDATE veya DELETE'den biri; tetigi calistiracak olayi
belirtmek icin kullanilir. OR kullanarak cok sayida olay
belirtilebilir.
tablo Tetigi icerecek tablonun ismi (sema nitelemeli olabilir).
FOR EACH ROW, FOR EACH STATEMENT
Tetik islevinin tetikleyici olay tarafindan her satir icin bir
kere mi yoksa her SQL deyimi icin bir kere mi calistirilacagini
belirler. Eger hicbiri belirtilmemisse, FOR EACH STATEMENT
ontanimlidir.
i,slev_ismi
Tetikle calistirilan, kullanici tarafindan argumansiz ve donus
turu trigger olarak bildirilmis ve tanimlanmis bir islev.
arg"umanlar
Tetik tarafindan calistirildiginda isleve aktarilacak istege
bagli argumanlarin virgulle ayrilmis listesi. Argumanlar dizge
sabitlerdir. Basit isimler ve sayisal sabitler de burada
yazilabilir, fakat her biri dizgeye donusturulecektir.
Tetikleyici islev dilinin nasil gerceklendigini incelemeniz ve
islev icinde tetik argumanlarina nasil erisildigini ogrenmeniz
onerilir; normal islev argumanlarindan farkli ele aliniyor
olabilirler.
EK BILGI
Bir tablo icinde bir tetik olusturmak icin, kullanici tablo uzerinde
TRIGGER yetkisine sahip olmalidir.
7.3 oncesi PostgreSQL surumlerinde, islevin donus turu olarak trigger
degil, opaque bildiriliyordu. Eski surume ait dokum dosyalarini
desteklemek icin, CREATE TRIGGER opaque turunde deger donduren
islevleri kabul edecek, ama islevin bildirilen donus turunun trigger
olarak degistirilmesini belirten bir uyari alacaksiniz.
Bir tetigi silmek icin DROP TRIGGER [drop_trigger(7)] kullanin.
"ORNEKLER
http://www.postgresql.org/docs/8.0/static/triggers.html adresinde
eksiksiz bir ornek bulacaksiniz.
UYUMLULUK
CREATE TRIGGER cumlesinin PostgreSQL gerceklenimi SQL:1999 standardinin
bir alt kumesini icerir. (SQL-92'de tetikler icin bir madde yoktur.)
Mevcut olmayan islevsellik soyle siralanabilir:
. SQL:1999 belli sutunlarin guncellenmesiyle calitirilacak
tetiklere izin verir (AFTER UPDATE OF col1, col2 gibi).
. SQL:1999 "eski" ve "yeni" satirlar icin ya da tetikleyen eylemin
(CREATE TRIGGER ... ON tabloismi REFERENCING OLD ROW AS birisim
NEW ROW AS yeniisim ... gibi) taniminda kullanmak icin tablolara
takma isim tanimlamaniza izin verir. PostgreSQL tetik
islevlerinin kullanicinin secimine bagli olarak herhangi bir
dilde yazilmasina izin verdiginden veriye erisim secilen dile
ozel yollarla olur.
. PostgreSQL sadece tetikleyen eylem icin kullanici tanimli bir
islevin calistirilmasina izin verir. SQL:1999 ise, tetiklenen
eylem olarak CREATE TABLE gibi baska SQL cumlelerinin
calistirilmasina izin verir. Bu sinirlamanin, istenen SQL
cumlelerini calistiracak kullanici tanimli bir islev olusturarak
cevresinden dolanmak hic de zor degildir.
SQL:1999, cok sayida tetigin olusturulma zamani sirasina gore
calistirilmasina izin verir. PostgreSQL ise calisilmasi daha uygun olan
isim siralamasini kullanir.
ILGILI BELGELER
CREATE FUNCTION [create_function(7)], ALTER TRIGGER [alter_trigger(7)],
DROP TRIGGER [drop_trigger(7)].
,CEVIREN
Nilgun Belma Buguner <nilgun (at) belgeler.gen.tr>, Nisan 2005