Provided by: manpages-tr_1.0.5.1-2_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
PostgreSQL CREATE TRIGGER(7)