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

ISIM

       CREATE RULE - bir yeniden yazma kurali tanimlar

KULLANIM

       CREATE [ OR REPLACE ] RULE isim AS ON olay
           TO tablo [ WHERE ko,sul ]
           DO [ ALSO | INSTEAD ] { NOTHING | komut | ( komut ; komut ... ) }

A,CIKLAMA

       CREATE  RULE  belirtilen  bir  tabloya  uygulanmasi icin yeni bir kural
       tanimlar. CREATE OR REPLACE RULE ya yeni bir kural olusturur  ya  da  o
       tabloda mevcut ayni isimde bir kural varsa o kurali degistirir.

       PostgreSQL kural sistemi veritabani tablolarinda veri girme, guncelleme
       veya silme islemlerini gerceklestirecek ek bir eylem tanimlamayi mumkun
       kilar.  Baska bir deyisle, bir kural, belirtilen bir tablo uzerinde her
       komut  calistirilisinda  ek  komutlarin  calistirilmasina  sebep  olur.
       Bundan  baska,  bir  INSTEAD kurali ile bir komutun bir baska komut ile
       degistirilebilmesi, hatta hic calistirilmamasi da mumkundur.  Kurallar,
       sanal   tablolarin  olusturulmasinda  da  kullanilabilir.  Bir  kuralin
       aslinda bir komut donusturme mekanizasi mi yoksa bir komut  makrosu  mu
       oldugunu  bilmek  onemlidir.  Donusum, verilen komutlar calistirilmadan
       once meydana gelir. Eger, bir islemin herbir fiziksel  satir  icin  tek
       tek  uygulanmasini  istiyorsaniz,  bunu suphesiz bir kuralla degil, bir
       tetikle yaparsiniz. Kural sistemi hakkinda daha ayrintili bilgi edinmek
       icin
       http://www.postgresql.org/docs/8.0/static/rules.html adresine bakiniz.

       Simdilik,  ON SELECT kurallari kosulsuz INSTEAD kurallari olmali ve tek
       bir ON SELECT komutundan olusan eylemler  icermelidirler.  Bu  sekilde,
       bir  ON  SELECT  kurali aslinda bir tabloyu bir sanal tabloya dondurur,
       ancak tabloda ne  varsa  degil,  kuralin  SELECT  komutunun  dondurdugu
       satirlar kullanilir. Sanal tablolari, once bir gercek tablo ardindan da
       buna bir  ON SELECT kurali uygulayip olusturmak yerine bir CREATE  VIEW
       komutu yazarak olusturmak daha iyi bir cozumdur.

       Bir  sanal  tablo  uzerinde ON INSERT, ON UPDATE ve ON DELETE kurallari
       tanimlayip, diger  tablolarin  ilgili  guncellemelerini  bu  guncelleme
       eylemleri  ile  degistirerek  guncellenebilir bir sanal tablo goruntusu
       olusturabilirsiniz.

       Sanal tablo guncellemeleri icin kosullu kurallar  kullanmak  isterseniz
       bir  hileye  basvurabilirsiniz: belirteceginiz her eylemin bir kosulsuz
       INSTEAD kurali icermesini saglamalisiniz. Eger kural, kosullu ise ya da
       INSTEAD  kurali  degilse,  sistem  guncelleme  eylemini uygulamayi hala
       reddetmeye calisacaktir. Cunku, bazi durumlarda, sanal tablonun taklidi
       uzerinde  uygulanacak  eylemin  sonuna  geldigini  varsayacaktir. Eger,
       kosullu   kurallardaki   tum   kullanisli   durumlarin    uygulanmasini
       istiyorsaniz,  sistemin  asla  bir  tablo  taklidini guncelleme cagrisi
       yapilmadigini anlamasini saglamak icin kosulsuz bir DO INSTEAD  NOTHING
       kurali   ekleyin.  Ardindan  da  INSTEAD  icermeyen  kosullu  kurallari
       olusturun; uygulandiklari yerlerde, bunlar  ontanimli  INSTEAD  NOTHING
       eylemine eklenir.

PARAMETRELER

       isim   Olusturulacak  kuralin  ismi. Bu ayni tablodaki diger kurallarin
              isimlerinden farkli olmalidir. Ayni tabloda ve ayni olay turunde
              cok sayida kural varsa, bunlar alfabetik sirada uygulanir.

       olay   SELECT, INSERT, UPDATE ve DELETE cumlelerinden biridir.

       tablo  Kuralin  uygulanacagi  tablo  ya  da  sanal  tablonun ismi (sema
              nitelemeli olabilir).

       ko,sul  Herhangi bir kosullu SQL ifadesi (boolean donduren). NEW ve  OLD
              olmasi  ve  ortak  deger islevleri icermemesi disinda bu kosullu
              ifade hicbir tabloya basvuru yapamaz.

       INSTEAD
              Komutlarin "ozgun komutlarin yerine" calistirilacagini belirtir.

       ALSO   Komutlarin  "ozgun  komutlara   ek   olarak"   calistirilacagini
              belirtir.

              ALSO ve INSTEAD birlikte belirtilemez. ALSO ontanimlidir.

       komut  Kuralin  eylemleri  olan  komut ya da komutlar. Gecerli komutlar
              SELECT, INSERT, UPDATE, DELETE veya NOTIFY'dir.

       ko,sul ve komut icinde, ozel tablo  isimleri  NEW  ve  OLD  basvurulacak
       tablonun  degerlerini  nitelemek icin kullanilabilir. NEW, ON INSERT ve
       ON UPDATE kurallarinda veri girilecek  ya  da  guncellenecek  yeni  bir
       satiri  belirtirken  kullanilabilir.  OLD  ise,  ON UPDATE ve ON DELETE
       kurallarinda  guncellenecek  ya  da   silinecek   mevcut   bir   satiri
       belirtirken kullanilabilir.

EK BILGI

       Uzerinde  bir kural tanimlayabilmeniz icin tablo uzerinde RULE yetkiniz
       olmalidir.

       Dongusel  kurallardan  kacinmaya  calismaniz  cok  onemlidir.  Ornegin,
       asagidaki  iki  kural tanimi PostgreSQL tarafindan kabul edildigi halde
       sorgunun defalarca bastan uygulanmasi  nedeniyle  PostgreSQL  bir  hata
       raporlayacaktir:

           CREATE RULE "_RETURN" AS
               ON SELECT TO t1
               DO INSTEAD
                   SELECT * FROM t2;

           CREATE RULE "_RETURN" AS
               ON SELECT TO t2
               DO INSTEAD
                   SELECT * FROM t1;

           SELECT * FROM t1;

       Simdilik,  bir  kural  eylemi  bir  NOTIFY komutu iceriyorsa, ne olursa
       olsun, kuralin  uygulanacagi  bir  satir  olmasa  bile,  NOTIFY  komutu
       calistirilir. Ornek:

         CREATE RULE notify_me AS ON UPDATE TO mytable DO ALSO NOTIFY mytable;

         UPDATE mytable SET name = 'foo' WHERE id = 42;

       UPDATE sirasinda, id = 42 kosulu ile eslesen bir satir olmasa bile, bir
       NOTIFY  olayi  gonderilecektir.   Bu,   gercekleme   ile   ilgili   bir
       kisitlamadir; ileriki surumlerde duzeltilebilir.

UYUMLULUK

       CREATE  RULE,  sorgunun  tamamini  yeniden  yazma  sistemi  olarak  bir
       PostgreSQL olusumudur.

,CEVIREN

       Nilgun Belma Buguner <nilgun (at) belgeler.gen.tr>, Nisan 2005