Provided by: manpages-tr_1.0.5.1-1.1_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 ilev_ismi ( argmanlar )

AÇIKLAMA

       CREATE  TRIGGER  yeni  bir  tetik oluşturur. Tetik belirtilen tablo ile
       ilişkilendirilecek ve belli bir olay meydana geldiğinde ilev_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.

       ilev_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.

       argmanlar
              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