这是我在此处发布的另一个问题。请不要关闭为重复,因为它走向另一个方向。
我想用另一列的聚合自动更新数据库列。涉及三个表:
T_RIDER
RIDER_ID
TMP_PONYLIST
...
T_RIDER_PONY
RIDER_ID
PONY_ID
T_PONY
PONY_ID
PONY_NAME
...
T_RIDER
并T_PONY
通过 建立n:m关系T_RIDER_PONY
。
T_RIDER
并T_PONY
有更多的列,但只有TMP_PONYLIST
在PONY_NAME
这里相关。
TMP_PONYLIST
是一个分号分隔的列表PONY_NAMES
,想象一下"Twisty Tail;Candy Cane;Lucky Leaf"
。无论T_RIDER_PONY
或T_PONY
.
所有应用程序只在视图上工作,从不直接访问表,我需要用物化视图解决这个问题。由于性能原因,物化是绝对要求,并且要求视图在提交时自行更新。
应该像这样创建视图
CREATE MATERIALIZED VIEW
V_TMP_PONYLIST
BUILD IMMEDIATE
REFRESH COMPLETE ON COMMIT
AS SELECT
...
对于... 我尝试了本文中的以下聚合技术。
- WM_CONCAT -> 在我的 Oracle 中不可用
- 用户定义的聚合 ->
ORA-12054
- ROW_NUMBER 和 SYS_CONNECT_BY_PATH ->
ORA-12054
我还没试过:
- 具体功能
- 使用 Ref 游标的函数泛型函数
- 收集功能
您是否看到任何机会让这些中的任何一个与物化视图一起工作,或者它是否毫无意义。你知道其他可能适用于物化视图的技术吗?
我正在使用 Oracle 数据库 10g 企业版版本 10.2.0.4.0 - 64bi。