Provided by: manpages-tr_1.0.5.1-2_all bug

İ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