【问题标题】:Oracle trigger to insert value from another table in a cycleOracle触发器循环插入另一个表中的值
【发布时间】:2013-11-12 16:38:42
【问题描述】:

在 tableA 中,我有一个 ID 字段,我希望在插入 tableA 时成为 tableB 中的值。然而,它应该为输入的每条记录循环遍历 tableB 中的所有值。因此,如果我在 tableB 中的 id 为 0、1、2、3,那么在第一次插入 tableA 时,它将分配 tableB 值 0,在第二次插入时,它应该使用 tableB 1,然后是 2,然后是 3,然后回到 0,然后就像这样循环循环。

我猜我需要一个表来跟踪哪个应该是下一个值,然后在我的触发器中使用该值,然后获取下一个值以用于下一个插入触发器。有人可以考虑在存储过程之外执行此操作的任何其他方式吗?

【问题讨论】:

  • 用实际的表数据n结构会很容易理解吗?

标签: oracle


【解决方案1】:

据我了解,您试图通过 TableB 中的 ID 循环将 TableB 中的数据加载到 TableA 中。 如果 TableB 中的数据是您想要将其加载到 TableA 上的历史数据,那么您需要带有游标的存储过程,以便您可以从 B 到 A 进行初始增量加载。在这种情况下,您不需要另一个表,因为您在存储过程中使用游标。

如果您希望在 TableB 上有插入或更新时填充 TableA,那么您可以在 TableB 上使用触发器。

【讨论】:

  • 所以基本上这是一种将服务器名称(存储为 tableB 中的字段)(不是真正随机,而是通过循环它们)分配到在 tableA 中创建的新记录的方法。想象一下 tableA 存储要运行的作业/任务,它有一个字段告诉它在哪个服务器上运行该任务,而 tableB 是可用服务器名称的列表。我只想为每个插入到 tableA 的列表中顺序分配下一个服务器。当我到达终点时,我想回到开始的服务器名称并重新开始。
猜你喜欢
  • 2015-11-25
  • 1970-01-01
  • 1970-01-01
  • 2015-08-17
  • 1970-01-01
  • 2021-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多