Delphi Can

Orjinalini görmek için tıklayınız: PostgreSQL trigger hatası
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
Merhaba

PostgreSQL de trigger yazmada sorun yaşıyorum. Tablo içindeki BAKIYE sütünunda güncelleme olduğunda aynı tablodaki SON isimli sütüna BAKIYE sutunun update önceki değerini yazdırmak istiyorum.

Yazdığım trigger daki hatayı bulamadım. sorun nerede olabilir?

function:
[attachment=1943]


[attachment=1944]


[attachment=1942]

Hata:
[attachment=1941]
Öncelikle update kısmına where ID ekleyin aksi durumda tüm kayıtları bozarsiniz. Where ID = New.id
İkinci kontrol olarak old.bakiye != New.bakiye durumunda güncelleme yapın gereksiz güncelleme işlemini engeller.
Return null yapın.

Ayrıca postgresql kullanırken tanımlamalar küçük harfle yapın.
(03-01-2022, Saat: 18:51)3ddark Adlı Kullanıcıdan Alıntı: [ -> ]Öncelikle update kısmına where ID ekleyin aksi durumda tüm kayıtları bozarsiniz. Where ID = New.id
İkinci kontrol olarak old.bakiye != New.bakiye durumunda güncelleme yapın gereksiz güncelleme işlemini engeller.
Return null yapın.

Ayrıca postgresql kullanırken tanımlamalar küçük harfle yapın.

cevap için teşekkür ederim. Bugün denme fırsatım oldu ve aşağıdaki şekilde çözüldü. "(çift tırnak) olmadan sutunları tanımıyor.

Kod:
CREATE OR REPLACE FUNCTION onceki_bakiye()
 RETURNS TRIGGER
 LANGUAGE PLPGSQL
 AS
$$
BEGIN
    IF NEW."BAKIYE" <> OLD."BAKIYE" THEN
        UPDATE "RAKAM" SET "SON" = OLD."BAKIYE"  WHERE "ID"=NEW."ID";
    END IF;

    RETURN NEW;
END;
$$

Kod:
CREATE TRIGGER onceki_bakiye
 AFTER UPDATE
 ON "RAKAM"
 FOR EACH ROW
 EXECUTE PROCEDURE onceki_bakiye();
Tablo ve kolon adlarını dediğim gibi küçük ve Türkçe karakter olmadan yazarsanız çift tırnak kullanmanıza gerek yok.
Postgresql tarafında böyle kullanılması tavsiye edilir.