【发布时间】:2019-09-10 19:38:46
【问题描述】:
我的表 C 有多个列,表 C 的一列中的任何更新都必须更新表 a 和 b 中的列
关系 b/w table @ db level 是 none,只有一列包含 table a 和 b 中的一些关键信息,没有别的。
现在我正在从一个 JAVA 应用程序中执行此操作,但我有数百万条记录要循环通过是否有可能在 DB 本身中实现这一点,就像内置的 oracle 功能...
我是如何做到这一点的,我在考虑触发器,但我说使用触发器不好。
我们尝试使用 java 应用程序,但循环数百万条记录非常耗时
没有DB关系b / w表A B和c,除了我们在表A和B中保留表C的portID的一些信息。我将无法在DB级别更改关系
表 C:
portID State
6001 1 -------> Updated to 2
6002 1
然后
表 A:
portID State
6001 1 -------> after Table C update this should also Updated to 2
表 B:
portID State
6001 1 -------> after Table C update this should also Updated to 2
如果我可以改变这些表之间的关系,我该如何实现,以便 DB 可以处理更新 A 和 B 表?
【问题讨论】:
-
为什么?在
C中查找值,这样您就不会在一堆表中重复数据。 -
使用 java 应用程序执行此操作,每当更新表 c 时,您查询表 a 和 b 中带有 portid x 的所有行,但更新大记录需要大量时间并导致性能问题... .如何像触发器一样实现这个@ DB级别....
-
触发器不太可能在这里更有效地执行任何操作。您可能会遇到与触发器相同的性能问题。这就是为什么非规范化数据是一个问题的原因——如果你试图更新它,你必须在多个地方更新它,而不仅仅是一个地方。
portID是否在 A 和 B 中编入索引? -
ohh okie.. 是的,它是 A 和 B 中的索引列
-
如果我可以改变这些表之间的关系,我该如何实现,以便 DB 可以处理更新 A 和 B 表?
标签: sql oracle sql-update