gpt4 book ai didi

postgresql - 带有 BEFORE INSERT 触发器的 RETURNING 子句

转载 作者:行者123 更新时间:2023-11-29 12:02:51 25 4
gpt4 key购买 nike

我正在使用表继承将一个表拆分成更小的表。我正在使用 BEFORE INSERT 触发器将新数据路由到正确的继承表中。此触发器返回 NULL,因此实际 INSERT 不会在父表上运行。

这样做的副作用是缺少实际 INSERT 的任何结果:

INSERT INTO TABLE a VALUES (...) RETURNING a_id

触发器 BEFORE INSERT 将新数据定向到另一个表 a_CURRENT_DATE - 在必要时由触发器函数动态创建。触发器返回 NULL 因此实际 INSERT 到表 a 被抑制。

原始查询没有结果,因此没有可用的 a_id(a_id 是一个 SERIAL 列)。

获取a_id值最优雅的方法是什么?

最佳答案

好问题。这是分区的典型问题。恐怕没有好的或优雅的解决方案,您所能做的就是介绍一些解决方法:

  • 插入,然后删除 - 是的,远非完美,
  • 如果您需要由serial 类型生成的id,您可以使用currval()...这意味着另一个查询。<

Here还有另一种方法 - 您可以创建 View ,并为该 View 使用 而不是 触发器。很难说这是否优雅,但对我来说已经很接近了。

关于postgresql - 带有 BEFORE INSERT 触发器的 RETURNING 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47453896/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com