sql - 用数据更新了表“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 表?
解决方案
您可以使用AFTER
Oracle 中的触发器来执行此操作。我给你举个例子:
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;
推荐阅读
- clang++ - "#include
" or not makes a performance difference on clang++ - html - i18next/i18n Change Language not working with the whole website
- php - WordPress 安全 - 子主题后门
- html - 如何将已经在浏览器中的图像放入表单
- reactjs - reactjs:材料ui:如何将两个项目对齐到两端
- kotlin - RxJava 的 retryWhen 意外地一直重试
- java - 如何有条件地从 WebFilter 中的 Mono 返回?
- svelte-3 - Svelte:引用 self 以在模块中使用
- php - 在后台实现一些功能 - Laravel
- javascript - 使用 github api 的嵌套获取返回的是承诺而不是数据?