【问题标题】:How can we have column in oracle whose data is dependent on other column from other table and should honour all the updates on dependent table我们如何在 oracle 中有列,其数据依赖于其他表中的其他列,并且应该尊重依赖表上的所有更新
【发布时间】:2021-12-13 21:49:31
【问题描述】:

假设我有两个表,表 A 和表 B,它们有一对多的关系。

表 A

col1 | Col2

表 B

Col1 | Col3

现在我想在表 A 中有一个 Col4,这样如果 Col3 的任何行对于给定的 Col1 值都为真,那么我希望表 A 中的 Col4 设置为真,否则为假。

表 B 上发生的所有更新都应始终更新表 A 中的 Col4 值。

这是否可以通过使用任何 oracle/PL-SQL 功能来实现?

【问题讨论】:

  • 有可能吗?当然。但是,采用不同的方法会为您提供更好的服务。要么在视图中进行计算,要么创建与 A 1:1 的物化视图,并在提交时刷新以在 B 中发生更改时进行计算。如果您需要持久化该计算,Oracle 构建的可能性更大-in MV 刷新逻辑会比一堆手动编码的触发器造成更少的问题。
  • 我完全同意@JustinCave。物化视图将比使用一组手动编码触发器好得多。更好、更快、更清洁

标签: sql oracle plsql triggers derived-column


【解决方案1】:

使用AFTER INSERT OR UPDATEtrigger

CREATE TRIGGER sync_tables
  AFTER INSERT OR UPDATE
  OF col1
  ON tableA
BEGIN  
   INSERT INTO tableB(col1) VALUES :NEW.col1
END; 

【讨论】:

    猜你喜欢
    • 2013-09-18
    • 2020-11-13
    • 2015-09-19
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-17
    相关资源
    最近更新 更多