2016-05-19 3 views
3

Ich habe folgende Funktion in pgpool erstellt.In pgpool bei der Verwendung von delete query innerhalb der postgresql-Funktion löscht es keine Daten von allen Servern

CREATE OR REPLACE Function fun1(Id int) 
RETURNS boolean as $executionStatus$ 
DECLARE 

BEGIN 
    DELETE FROM table1 where table1_id = Id ; 
    DELETE from table2 where table2_id = Id ; 
    DELETE from table3 where table3_id = Id ; 
    RETURN true; 
END; 
$executionStatus$ LANGUAGE plpgsql; 

I laufe folgenden Befehl in der postgres Schale pgpool

select fun1(1); 

sie die Daten nur aus dem Master gelöscht. Ich habe es erneut versucht, dann wird es von verschiedenen Server gelöscht.So Replikation schlägt in diesem Fall fehl. Aber wenn ich Abfragen separat lösche, funktioniert es gut. Es löscht Daten von allen Servern.

DELETE FROM table1 where table1_id = 1 ;DELETE from table2 where table2_id = 1 ;DELETE from table3 where table3_id = 1 ; 

Bitte lassen Sie mich wissen, wie Sie dieses Problem beheben können.

Antwort

2

Ich habe die Antwort selbst gefunden Im Replikationsmodus (Replikationsmodus = ein) ist SELECT ausgewogen und nur einer der PostgreSQL Server empfängt den Befehl. Lösung wäre:

1) Hinzufügen "/ * REPLICATION * /" Kommentar vor dem SELECT.

2) Fügen Sie func1 zur black_function_list hinzu.

Verwandte Themen