我可以用Slony复制视图吗?
-
22-10-2019 - |
题
我可以喂一些SQL,从而创造出slony的视图吗?
我有一些SQL CREATE 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 Admin脚本无法为复制添加视图,并且我应该手动将其安装在我的复制群集的所有成员上?
解决方案
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-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美分。