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

PostgreSQL                                                                                     CREATE TRIGGER(7)