Postgresql

我可以用 Slony 複製視圖嗎?

  • October 1, 2012

我可以向 Slony 提供一些創建視圖的 SQL 嗎?

我有一些 SQLCREATE OR REPLACE VIEW name_of_view等等,將其傳遞給slonik_execute_script,然後嘗試執行slonik_create_set一個僅包含該視圖的臨時 Slony 集。

ERROR: Slony-I: table "public"."name_of_view" has no primary key我因錯誤而被拒絕。據我所知,視圖不支持主鍵。

這是否意味著無法使用 Slony 管理腳本向複製添加視圖,而我應該在複製集群的所有成員上手動安裝它?

Slony 是基於觸發器的。由於您不能在視圖上使用觸發器,因此您不能使用 Slony 來複製視圖。

但是,您可以通過使用 Slony 複製視圖使用的表並在從屬伺服器上複製視圖定義來達到預期的效果。

根據文件,僅支持普通表:

Slony-I:setAddTable_int():public.my_view 不是正常表 您只能複制(至少,使用 SET ADD TABLE)是普通表的對象。這不包括視圖或索引。(索引可以隨心所欲,但您不會要求複製索引…)

http://slony.info/documentation/stmtsetaddtable.html

程式碼中有一個檢查以強制執行此http://slony.info/documentation/function.setaddtable-int-integer-integer-text-name-text.html

您收到的錯誤消息似乎是正確的,因為我假設您沒有在 slon_tools.conf 中為視圖指定任何主鍵或唯一鍵。但是,如果您實際上指定了主鍵或唯一鍵——它必須是視圖返回的列,該怎麼辦?然後我希望 slonik_create_set 通過主/唯一鍵檢查,而不是失敗並出現錯誤:

Slony-I: setAddTable_int(): "public"."my_name_of_view" is not a regular table

那是我的 2 美分。

引用自:https://dba.stackexchange.com/questions/16331