gpt4 book ai didi

postgresql - 在 postgres 中隐藏行

转载 作者:行者123 更新时间:2023-11-29 12:31:50 24 4
gpt4 key购买 nike

我决定不从 postgres 数据库中删除行,而是隐藏这些行,这样万一这些行被意外删除,我仍然可以检索它们。从数据库中隐藏行的最佳方法是什么?您是否建议创建一个名为“事件”的列并为其赋值 1 或 0,1 表示事件,0 表示已删除和隐藏。如果重要的话,我也在使用 sqlalchemy。

最佳答案

您可以隐藏真实表,创建 View 并使用规则进行插入、更新和删除。

假设您有一个 session 表。我会创建一个名为 sessions_table 的表,其中包含所有数据和“事件”列。然后你有一个名为 session 的 View (CREATE view sessions AS SELECT [all fields withtout active] FROM sessions_table WHERE active = TRUE),正如 Greg 所提到的。

现在你可以创建一个规则:如果你想删除 session 中的一行,你想更新 session 表中的一行:

CREATE RULE delete_session ON DELETE TO sessions DO INSTEAD UPDATE sessions_table SET active = FALSE WHERE id = OLD.id;

要插入,您需要:

CREATE RULE insert_session ON INSERT TO sessions DO INSTEAD INSERT INTO sessions_table (..., active) VALUES(..., TRUE);

终于有了

CREATE RULE update_session ON UPDATE TO session DO INSTEAD UPDATE sessions_table SET ... WHERE id = new.id AND active = TRUE;

现在您可以完全在 session 上工作,而不必为事件列操心。

关于postgresql - 在 postgres 中隐藏行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1450628/

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