我可以向 Slony 提供一些创建视图的 SQL 吗?
我有一些执行此类操作的 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 管理脚本向复制添加视图,而我应该只在复制集群的所有成员上手动安装它?
Slony 是基于触发器的。由于您不能在视图上使用触发器,因此您不能使用 Slony 来复制视图。
但是,您可以通过使用 Slony 复制视图使用的表并复制从属服务器上的视图定义来达到预期的效果。
根据文档,仅支持普通表:
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 通过主键/唯一键检查,而不是因错误而失败:
那是我的 2 美分。