[SORU] - PostgreSQL - Trigger ve Function Hakkında

Diğer veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
hi_selamlar
Üye
Mesajlar: 523
Kayıt: 05 May 2005 03:24
Konum: DelphiTürkiye.COM

[SORU] - PostgreSQL - Trigger ve Function Hakkında

Mesaj gönderen hi_selamlar »

S.A. Arkadaşlar.

Projelerimi artık PosgreSQL ile yapmayı planlıyorum. (Delphi)

Fakat çözemediğim bazı olaylar var.

1-) Function tanımlamadan Trigger kullanılamıyormu ?
2-) Basit bir insert,update, delete trigger örneği verebilirmisiniz?
3-) Trigger ile function örneği verebilirmisiniz? (New.Columns, Old.Columns, if Insert or Update or Delete then örneklerini içeren)
4-) PostgreSQL tercihim doğru mu? ( Hem Local Network, hem de şehirler arası İnternet üzerinden kullanılacak )
5-) Önerebileceğiniz türkçe kaynaklı siteler !

Şimdiden paylaşımda bulunan arkadaşlara teşekkür ederim.

Saygılar
Herkes cahildir, bazi konularda.
Kullanıcı avatarı
hi_selamlar
Üye
Mesajlar: 523
Kayıt: 05 May 2005 03:24
Konum: DelphiTürkiye.COM

Re: [SORU] - PostgreSQL - Trigger ve Function Hakkında

Mesaj gönderen hi_selamlar »

S.A.

Arkadaşlar bir programın demo sürümünü çektik (Sql maestro PostgreSQL deneme sürümü ).
inanın bir türlü hangi mantıkla trigger oluşturulacağı, nasıl kullanılacağı, inanın bulamadık.
bu konuda bilgisi olan arkadaşlardan yardım ve destek bekliyoruz. :Noops

Acaba POstgreSQL de function tanımlamadan Trigger kullanılamıyormu?
Basit bir öenek yokmu arkadaşlar...

S.A.
Teşekkürler.
Herkes cahildir, bazi konularda.
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: [SORU] - PostgreSQL - Trigger ve Function Hakkında

Mesaj gönderen sabanakman »

Başka bir yönetici kullanın mesela EMS'nin DB Manager paketleri aynı arayüzlere ve yeteneklere sahip olduklarından işinize yarayablir. SQL Server için kullandığımdan gayet başarılı bir yönetim aracı. Ücretsiz (Freeware) versiyonları işinizi görecektir.
http://www.sqlmanager.net/products/post ... r/download
http://www.sqlmanager.net/en/products/p ... load/5/134
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
hi_selamlar
Üye
Mesajlar: 523
Kayıt: 05 May 2005 03:24
Konum: DelphiTürkiye.COM

Re: [SORU] - PostgreSQL - Trigger ve Function Hakkında

Mesaj gönderen hi_selamlar »

S.A.
Öncelikle ilginiz için teşekkür ederim.
Sanırım soruyu yanlış aktardım size.

Benim sıkıntım PostgreSQL ile trigger ve Function nasıl oluşturuluyor ve nasıl bir birlerine bağlanılıp kullanılıyor.
Yani işin açıkcası ben PostgreSQL ile Trigger'ı neden Function yazmadan kullanamıyorum. Buna izin vemiyor.?

Bilgisi olan arkadaşlardan ricam; PostgreSQL ile basitte olsa Trigger ve Function kullanım örneği verirmisiniz ?
İnanın bunun mantığını bir türlü anlamadım.. MySQL ile veya Diğer RDBMS Database'lerde istediğiniz gibi at koşturabiliyorsunuz.

PostgreSQL ile neden;
- Trigger başlı başına kullanılamıyor ?
- Function trigger bağlantısı nasıl yapılıyor ?
- Öneri yapılacak türkçe kaynak ?
- Basit bir örnek ?

Lütfen, bilgi ve tecrübelerinizi paylaşın bizimle.

S.A.

Saygılar..
Herkes cahildir, bazi konularda.
Kullanıcı avatarı
hi_selamlar
Üye
Mesajlar: 523
Kayıt: 05 May 2005 03:24
Konum: DelphiTürkiye.COM

Re: [SORU] - PostgreSQL - Trigger ve Function Hakkında

Mesaj gönderen hi_selamlar »

S.A.

arkadaşlar bu konu hakkında en azından önlendirme yapabilecek bir arkadaşımız
bilgi verirse inanın çok sevinirim.

projeye postgresql ile başlayıp başlamama konusunda çok endişeliyim.
lütfen bilen arkadaşlar yardımlarınızı bekliyorum.

saygılar

S.A.
Herkes cahildir, bazi konularda.
Kullanıcı avatarı
kimene
Üye
Mesajlar: 78
Kayıt: 28 Haz 2003 02:39
Konum: İstanbul

Re: [SORU] - PostgreSQL - Trigger ve Function Hakkında

Mesaj gönderen kimene »

Merhaba. rule lar işinizi görebilir.

CREATE OR REPLACE RULE kimlik_isim AS
ON INSERT TO udr.kimlik DO UPDATE udr.kimlik SET adi= initcap(kimlik.adi::text)
WHERE kimlik.kayitno= kimlik.kayitno;


CREATE OR REPLACE RULE malzeme_hareketi_update AS
ON UPDATE TO udr.poliklinikhareketi DO UPDATE udr.malzemehareketleri SET tutar = new.fiyati, malzemekodu = new.islemkodu
WHERE malzemehareketleri.malzemehareketino = old.malzemehareketino;
Kullanıcı avatarı
hi_selamlar
Üye
Mesajlar: 523
Kayıt: 05 May 2005 03:24
Konum: DelphiTürkiye.COM

Re: [SORU] - PostgreSQL - Trigger ve Function Hakkında

Mesaj gönderen hi_selamlar »

s.a.
öncelikle ilginiz için çok teşekkür ederim.

denemelerime rağmen trigger kullanımı için öncelikle function tanımlaması yapılmalı
ve oluşturulan function trigger içinde kullanılıyor. en azından tasarım programında (sql maestro for postgresql demo sürüm)
izin vemiyor. önce function tanımla sonra trigger tanımlaması yap diyor.

zaten takıldığım nokta da bu zaten.
istediği örnek bu arkadaşlar.

function tanımlama ve bu funtion u trigger içerisinde kullanımı ? :?:

s.a.
saygılar
Herkes cahildir, bazi konularda.
emin_as
Üye
Mesajlar: 559
Kayıt: 01 Eki 2008 10:05
Konum: izmir
İletişim:

Re: [SORU] - PostgreSQL - Trigger ve Function Hakkında

Mesaj gönderen emin_as »

Postgresql deki triggerlarla ilgili dokuman.
http://www.postgresql.org/docs/8.1/inte ... ggers.html

Trigger in nasıl oluşturulduguna ilişkin dokuman.
http://www.postgresql.org/docs/8.1/inte ... igger.html

PL/SQL ile dokuman.
http://www.postgresql.org/docs/8.1/inte ... pgsql.html

Anladıgım kadarıyla önce trigger döndüren bir fonksiyon yazmak zorundasın, daha sonra istediğin kadar tirgger da bu fonksiyonu çagırabiliyorsun. Direk trigger fonksiyonu yazdırmak yerine, iki aşamalı yapmayı zorunlu kılmış. Önce fonksiyon oluşturuyorsun. Bu fonksiyon parametre kabul etmeyip, trigger döndürecek ve sen bunu create trigger ile istediğin tablonun olayına baglayacaksın.

Örnek bir trigger:
http://www.postgresql.org/docs/8.1/inte ... igger.html

CREATE FUNCTION emp_stamp() RETURNS trigger AS $emp_stamp$
BEGIN
-- Check that empname and salary are given
IF NEW.empname IS NULL THEN
RAISE EXCEPTION 'empname cannot be null';
END IF;
IF NEW.salary IS NULL THEN
RAISE EXCEPTION '% cannot have null salary', NEW.empname;
END IF;

-- Who works for us when she must pay for it?
IF NEW.salary < 0 THEN
RAISE EXCEPTION '% cannot have a negative salary', NEW.empname;
END IF;

-- Remember who changed the payroll when
NEW.last_date := current_timestamp;
NEW.last_user := current_user;
RETURN NEW;
END;
$emp_stamp$ LANGUAGE plpgsql;

CREATE TRIGGER emp_stamp BEFORE INSERT OR UPDATE ON emp
FOR EACH ROW EXECUTE PROCEDURE emp_stamp();

PostgreSQL özellikleri olarak firebird den çok daha gelişmiştir. Ben 1-2 defa geçip, programları postgresql e göre geliştireyim dedim, sonra vazgeçtim. Vazgeçme nedenim postgresql in yetersizliği değil, daha çok kurulum, bakım gibi olaylardı. Herkes kolayca postgresql kurup, ayarlayamabilir ve delphi bileşenlerinin direk postgresql desteği yok.
Kullanıcı avatarı
hi_selamlar
Üye
Mesajlar: 523
Kayıt: 05 May 2005 03:24
Konum: DelphiTürkiye.COM

Re: [SORU] - PostgreSQL - Trigger ve Function Hakkında

Mesaj gönderen hi_selamlar »

S.A.

Arkadaşlar lütfen bi el atın ..
kaç gündür kafayı yiyeceğim. basit bir deneme yapim dedim trigger ile ilgili ne yaptıysam olmadı.
PostgreSQL bu kadar zor olamaz yaaa.. valla kafayı yiyeceğim. Projeye bir türlü başlayamadım.

Arkadaşlar deneme yapmak istediğim ;

Kod: Tümünü seç

STOK_KART TABLE
=====================
ID         STOK_KODU             STOK ADI          GIREN      CIKAN
--------- ----------------------- ----------------- ------------ -------------
1           001                        DENEME1             0               0
2           002                        DENEME2             0               0

GIRIS_CIKIS TABLE
=====================
ID         STOK_KODU             STOK ADI          GIREN      CIKAN
--------- ----------------------- ----------------- ------------ -------------
1           001                        DENEME1             10               5
2           002                        DENEME2             5                 3
Örnek isteği ise;

giris_cikis tablodan yapılan işlemler neticesini stok_kart tablosundaki
giren ve çıkan sahalarına Trigger destekli toplatmak.

Evet güldüğünüzü tahmin edebiliyorum.. :lol:

Vallahi bu işlemi yapamadım.
POstgreSQL için bir türlü bu işlemi yapamadım.

Lütfen bir el atın yoksa projeden vaz geçip MySQL kullanmak zorunda kalıcam.

S.A.
Teşekkürler.
Herkes cahildir, bazi konularda.
Cevapla