[ÇÖZÜLDÜ Kısmen]Trigger ile Başka Database çinde Shadow Copy oluşturma

ixiRx

Forum Üyesi
22 Eyl 2022
795
4
0
Russia
Merhaba

Elimde uygulama için kullandığım bir veri tabanı var ve içinde bir sürü tablo var. Bu veri tabanının birden fazla farklı uygulama için kullanımları var*fakat yapı olarak*birebir aynı veri tabanı.

Ben bu tablolarda silme veya değişiklik*yapıldığında bir kopyasını log olarak tutmak istiyorum.

Bende şöyle bir yol izlemeyi planladım. Log için bir tane veri tabanı oluşturup. Daha sonra bunun içinde PostgreSQL in güzel bir özelliği olan schema ile her farklı uygulama için bir schema açıp bu veri tabanı içinde logları toplu halde tutmak istiyorum.

Log işlemini*aynı veri tabanı içinde olursa aşağıdaki kod ile*sorunsuz işlemi yapabiliyorum. Hangi tablo olursa olsun direkt olarak*OLD*içindeki tablo verisini direkt olarak tablo adı bilgisi ile*INSERT*ediyor.

EXECUTE format('INSERT INTO %I.%I VALUES ($1.*)', (SELECT current_database()), TG_TABLE_NAME)
USING OLD;
RETURN OLD;
Farklı veritabanı*içinde tutmak istediğimde ise*bir yerde takıldım ve buna ek olarak farklı görüş ve fikirlere de açığım. Her tablo için farklı trigger ler yazabilirim fakat bu çok fazla amatör ve zaman gerektiren bir işlem daha sonra da bir güncelleme yapılmak istenirse buda çok fazla zaman alır.


_old_val := (SELECT array[OLD.*]);* --OLD içindeki*bilgiyi bir şekilde parse edip 'ELMA', 'ARMUT', 'PATATES' gibi ayırmam gerekiyor
_sql := (SELECT format('INSERT INTO %I.%I VALUES (%L, %L, %L)', _database, TG_TABLE_NAME, _username, _ip, _old_val));
PERFORM dblink('host=localhost user=postgres password=123 dbname=ths_erp_log port=5432', '' ||*_sql);
Yukarıdaki _old_var değişkenin sonucu aşağıdaki gibi*geliyor. Arada null olan bilgiler var. Bunlarda direkt virgül var hiç bir şey yazmıyor.

ERROR: SQL=INSERT INTO ths_erp2017.cins_ozelligi VALUES ('THS_ADMIN', '127.0.0.1/32', E'{"(13,t,1,PANOFONK,\\"TABLO FONKSİYON\\",ANAKART,HABERLEŞME,TAHRİK,\\"BASİT KUMANDA\\",\\"AŞAÐI TOPLAMA\\",\\"ÇİFT DÜÐME\\",,,,\\"ASANSÖR STANDART\\",,SERİ,f)"}')I'.

Asıl olaması gereken durum ise
INSERT INTO ths_erp2017.cins_ozelligi VALUES ('THS_ADMIN', '127.0.0.1/32', 13,t,1,'PANOFONK', 'TABLO FONKSİYON', 'ANAKART', 'HABERLEŞME', 'TAHRİK', 'BASİT KUMANDA', 'AŞAÐI TOPLAMA', 'ÇİFT DÜÐME', NULL, NULL, NULL, 'STANDART', NULL, 'SERİ', f);OLD içindeki bilgiyi birşekilde*parse edebilirsem hiç bir derdim kalmayacak sorunsuz olarak farklı bir veri tabanı içinde herhangi bir tablo için shadow copy işlemini yapmış olacağım.
OLD yerine trigger içinde işlem yapılan tablo belli o tablo içeriğini de alabilirim.
*
EXECUTE format('SELECT * FROM %I WHERE %s=%s', TG_TABLE_NAME, TG_TABLE_NAME || '.id',*OLD.id)
*Fakat asıl veriyi işleyip tırnakla ayrılmış*text gibi dönüştürmem ve _old_val içinde bu bilgiyi göndermem gerekiyor.


Biraz karışık oldu galiba
 

Genel Forum

Türkçe Forum Siteleri

İnternette bilgi paylaşımı ve tartışma ortamı arayanlar için forum siteleri uzun yıllardır popüler bir tercih olmuştur. Her yaştan ve ilgi alanından kullanıcıya hitap eden genel forum siteleri, teknoloji, oyun, kültür ve daha pek çok konuda geniş içerik sunmaktadır. Bu platformlar, katılımcıların hem öğrenme hem de eğlenceli vakit geçirme ihtiyaçlarını karşılamaktadır.

Genel Forum Sitesi

İnternette Türkçe forumlar üzerinden içerik paylaşmak, dil bariyerini ortadan kaldırarak yerel kültüre uygun bir deneyim sunar. Türkçe forum siteleri, kullanıcıların bilgiye kolayca ulaşabileceği, aynı zamanda sosyal ve eğlenceli paylaşımlar yapabileceği platformlar oluşturur. Türkiye'deki internet kullanıcıları için bu forumlar, ilgi çekici konularda derinlemesine sohbetler sunar.

Genel Forum Siteleri

Günlük hayatın stresinden uzaklaşmak isteyenler için eğlenceli forumlar, keyifli bir alternatif sunar. Farklı hobilere ve ilgi alanlarına yönelik içeriklerle dolu olan bu forum paylaşım siteleri, kullanıcılarına samimi bir ortamda vakit geçirme fırsatı sunarken, aynı zamanda yeni insanlarla tanışma imkanı da sağlar. Eğlenceli paylaşımlar ve interaktif etkinliklerle dolu olan bu platformlar, hem öğrenmeyi hem de keyifli vakit geçirmeyi bir arada sunar.

İnternette yeni bir topluluk arayan ya da bilgi alışverişi yapmak isteyenler için genel forum siteleri harika bir başlangıç noktasıdır. Geniş bir kullanıcı kitlesine hitap eden Türkçe forumlar, herkesin ilgisini çekecek konularla doludur. Siz de bu platformlara katılarak, kendi ilgi alanlarınıza uygun başlıklarda sohbetlere katılabilir ve katkıda bulunabilirsiniz. 

Not : Lütfen Çekim Paylaşım Forumları için sitemizi kullanmayın.

Üst