首页 > 解决方案 > 用数据更新了表“c”,此更新应再次更新表“a”和表“b”中的列

问题描述

我有包含多列的表 C,表 C 的一列中的任何更新都必须更新表 a 和 b 中的列

关系 b/w table @ db level 是 none,有一列包含 table a 和 b 中的一些关键信息,没有别的。

现在我正在从一个 JAVA 应用程序中执行此操作,但我有数百万条记录要循环通过是否有可能在 DB 本身中实现这一点,如内置的 oracle 功能......

我如何实现这一点,正在考虑触发器,但我说使用触发器不好。

我们尝试使用 java 应用程序,但循环数百万条记录非常耗时

没有 DB 关系 b/w 表 AB 和 c,除了我们在表 A 和 B 中保留表 C 的 portID 的一些信息。我将无法在 DB 级别更改关系

表 C:

portID  State 
6001     1 -------> Updated to 2 
6002     1

然后

表一:

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 表?

标签: sqloraclesql-update

解决方案


您可以使用AFTEROracle 中的触发器来执行此操作。我给你举个例子:

CREATE OR REPLACE TRIGGER "trg_upd_tbl_a_tbl_b"
AFTER UPDATE ON c
REFERENCING NEW AS New OLD as Old
FOR EACH ROW
BEGIN
    IF UPDATING THEN
        UPDATE a SET a.state=:New.state WHERE portID=:New.portID;
        UPDATE b SET b.state=:New.state WHERE portID=:New.portID;
    END IF;
END;

推荐阅读