我创建了一个页面,其中在组织俱乐部旁边显示事件数据。由于事件和俱乐部存储在不同的表中,因此我创建了一个视图,该视图结合了两个表中的记录。页面的报告部分工作正常。但是,在创建新事件和更新事件时,我遇到了错误。
当我创建页面时,我选择了event_id和其他不必要的俱乐部列,这些列不包含在报表中,也没有包含在表单中
我认为正在发生错误,因为我使用的是数据视图而不是实际的表。我该如何解决这个问题。
另外,当我使用实际表获取数据时,因为我没有在表单中包含“ event_id”列(因为我不希望在报表或表单中出现不可更改的主键),所以它给我一些错误,指出我无法在'event_id'列中插入空值。我也该如何解决这个问题?
视图表的SQL脚本如下所示。
create or replace view "V_EVENT" as
SELECT event.*, club_name
FROM event
LEFT JOIN (club_event INNER JOIN club ON club_event.club_id = club.club_id)
ON event.event_id = club_event.event_id
谢谢。
答案 0 :(得分:0)
您可以将视图用作表更新的代理,但正如错误所建议的那样,它们必须保持键值不变。
这意味着您至少应该在视图中选择主键,并且不要在失去该PK唯一性的任何地方加入。
有时它会因为存在歧义而抱怨,例如缺少外键约束。探索了更多示例here
您仍然可以在APEX中包括这些重要的列,以便您可以在元数据中相应地将它们定义为主键,只需将它们设置为“隐藏”即可。
但是您仍然需要为新记录设置该值,例如计算,触发器或使用identity column。