Pri*_*tha 5 database postgresql pgpool
我在 pgpool 中创建了以下函数。
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;
Run Code Online (Sandbox Code Playgroud)
我在 pgpool 的 postgres shell 中运行以下命令
select fun1(1);
Run Code Online (Sandbox Code Playgroud)
仅从主站删除数据。我再次尝试,然后它从不同的服务器中删除。因此在这种情况下复制失败。但如果我单独使用删除查询,那么它工作正常。它正在从所有服务器中删除数据。
DELETE FROM table1 where table1_id = 1 ;DELETE from table2 where table2_id = 1 ;DELETE from table3 where table3_id = 1 ;
Run Code Online (Sandbox Code Playgroud)
请让我知道如何解决这个问题。
我自己找到答案在复制模式(replication_mode = on)中,SELECT 是负载平衡的,并且只有一台 PostgreSQL 服务器接收命令。解决方案是:
1)在SELECT前面添加“/*REPLICATION*/”注释。
2) 将 func1 添加到 black_function_list。
| 归档时间: |
|
| 查看次数: |
336 次 |
| 最近记录: |