From: | Volkan YAZICI <yazicivo(at)ttnet(dot)net(dot)tr> |
---|---|
To: | Ahmet <corsairsoft(at)gmail(dot)com> |
Cc: | pgsql-tr-genel(at)postgresql(dot)org |
Subject: | Re: Trigger Procedure Hakkı |
Date: | 2006-04-07 18:59:51 |
Message-ID: | 20060407185951.GA222@alamut |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-tr-genel |
On Apr 07 11:53, Ahmet wrote:
> CREATE OR REPLACE FUNCTION "public"."fonksiyonum" () RETURNS trigger AS
> $fonksiyonum$
> BEGIN
>
> new.toplam = new.birim * new.adet;
Şöyle örnek bir kod parçası vereyim, hatanızı oradan seçin:
BEGIN;
CREATE TABLE trig_t (toplam integer, birim integer, adet integer);
CREATE FUNCTION trig_f() RETURNS trigger AS $$
BEGIN
NEW.toplam := NEW.birim * NEW.adet;
RETURN NEW;
END;
$$ LANGUAGE plpgsql STRICT VOLATILE;
CREATE TRIGGER trig_t_f
BEFORE UPDATE ON trig_t
FOR EACH ROW
EXECUTE PROCEDURE trig_f();
COPY trig_t FROM stdin;
100 10 1
200 20 2
300 30 3
400 40 4
500 50 5
\.
SELECT toplam, birim, adet FROM trig_t;
UPDATE trig_t SET birim = birim WHERE adet % 2 = 0;
SELECT toplam, birim, adet FROM trig_t;
ROLLBACK
> RETURN NULL; // RETURN NEW; < bunuda denedim
Yukarıdaki satır oldukça yanlış olmakla birlikte, bu şekilde
deneme-yanılma yöntemine başvurmaktansa PostgreSQL dökümantasyonunda
PL/pgSQL prosedürel dilinde trigger'ların nasıl oluşturulacağını
içeren bölüme bakmanız sizi cevaba daha çabuk götürebilir. (Özellikle
BEFORE ve AFTER trigger'larda NULL değer döndürmek ile ilgili kısma
bakınız.)
> CREATE TRIGGER "hesapla" AFTER UPDATE // BEFORE UPDATE denedim
Yukarıdaki paragraf burası için de geçerli. (Hatta bu kodu görünce "Acaba
BEFORE ve AFTER trigger arasındaki farkı gerçekten biliyor mu?" sorusu
aklımdan geçmedi değil.)
İyi çalışmalar.
From | Date | Subject | |
---|---|---|---|
Next Message | Devrim GUNDUZ | 2006-04-13 08:13:53 | İş ilanı |
Previous Message | Ahmet ERDOGAN | 2006-04-07 14:16:31 | Trigger Procedure Hakkında |