gpt4 book ai didi

sql - 使用触发器的 PostgreSQL 审计历史

转载 作者:行者123 更新时间:2023-11-29 13:40:08 25 4
gpt4 key购买 nike

我需要维护一个历史表,该表将跟踪我数据库中所有表中发生的所有修改。

下面是认可的sql,是一个通用的表,会接受表名,列名,值,涉及的 Action (插入/更新/删除)等。

CREATE TABLE "User_History" (
"id" serial,
"table_name" text NOT NULL,
"column_name" text NOT NULL,
"pk_id" text,
"old_value" text,
"new_value" text,
"action" text,
"modified_at" timestamp NOT NULL DEFAULT NOW(),
"modified_by" UUID NOT NULL,
PRIMARY KEY ("id")
);

任何跨数据库的 CRUD 操作都必须插入到这个表中。

我总共有78张 table (以后很可能会增加)。go to 方法是使用触发器。这让我很担心。因为,如果我的理解是正确的,我将不得不为每一列创建一个函数,然后将其绑定(bind)到触发器。这意味着,如果我在 78 个表中各有 10 列,那么它将总共有 780 个函数(每个函数代表每个表的各个列)和调用这些函数的相等数量的触发器。

我真的希望有更好的解决方案。目前根本不可能在代码中跟踪这一点。

我们将不胜感激任何对此问题的帮助。

最佳答案

每个表需要一个触发器,而不是每个列。

您可以为每个表编写一个触发器函数,或者编写一个适用于所有表的通用触发器函数。

关于sql - 使用触发器的 PostgreSQL 审计历史,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56873432/

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