这是我在此处发布的另一个问题。请不要关闭为重复,因为它走向另一个方向。
我想用另一列的聚合自动更新数据库列。涉及三个表:
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。