後、リモート・データベース内の行を挿入するには:表flux_tresorerie_historique
からデータを削除した後
を、それが表にこの行を挿入し、別のデータベースのアーカイブに配置されてflux_tresorerie_historique
トリガー私はこのように動作し、トリガー作成した削除
I dblinkを使用してリモートデータベースにデータを挿入すると、クエリの作成が非常に難しく、特にテーブルに20以上のカラムが含まれていて、他の10個のテーブルに対して同様の関数を作成したいという問題があります。
このタスクを確実にするもう1つの迅速な方法はありますか?正常に動作します
ここでは例:
CREATE OR REPLACE FUNCTION flux_tresorerie_historique_backup_row()
RETURNS trigger AS
$BODY$
DECLARE date_rapprochement_flux TEXT;
DECLARE code_commission TEXT;
DECLARE reference_flux TEXT;
BEGIN
IF OLD.date_rapprochement_flux is null
THEN
date_rapprochement_flux = 'NULL';
ELSE
date_rapprochement_flux = ''''||to_char(OLD.date_rapprochement_flux, 'YYYY-MM-DD')||'''';
END IF;
IF OLD.code_commission is null
THEN
code_commission = 'NULL';
ELSE
code_commission = ''''||replace(OLD.code_commission,'''','''''')||'''';
END IF;
IF OLD.reference_flux is null
THEN
reference_flux = 'NULL';
ELSE
reference_flux = ''''||replace(OLD.reference_flux,'''','''''')||'''';
END IF;
perform dblink_connect('dbname=gtr_bd_archive user=postgres password=postgres');
perform dblink_exec('insert into flux_tresorerie_historique values('||OLD.id_flux_historique||','''||OLD.date_operation_flux||''','''||OLD.date_valeur_flux||''','||date_rapprochement_flux||','''||replace(OLD.libelle_flux,'''','''''')||''','||OLD.montant_flux||','||OLD.contre_valeur_dzd||','''||replace(OLD.rib_compte_bancaire,'''','''''')||''','||OLD.frais_flux||','''||replace(OLD.sens_flux,'''','''''')||''','''||replace(OLD.statut_flux,'''','''''')||''','''||replace(OLD.code_devise,'''','''''')||''','''||replace(OLD.code_mode_paiement,'''','''''')||''','''||replace(OLD.code_agence,'''','''''')||''','''||replace(OLD.code_compte,'''','''''')||''','''||replace(OLD.code_banque,'''','''''')||''','''||OLD.date_maj_flux||''','''||replace(OLD.statut_frais,'''','''''')||''','||reference_flux||','||code_commission||','||OLD.id_flux||');');
perform dblink_disconnect();
RETURN NULL;
END;
作品たくさんデータをマスターから再挿入し、ストリームレプリケーションを使用しましたが、マスターからデータを削除するとスタンバイから自動的に削除されますが、私のプロを解決できる別のソリューションを提案してくださいblem –
これは、ローカルテーブルとリモートテーブルが同一である場合に最適なソリューションです。ありがとう –