teg*_*ggy 2 postgresql rows hide
我决定不从 postgres 数据库中删除行,而是隐藏这些行,以便在意外删除行的情况下,我仍然可以检索它们。从数据库隐藏行的最佳方法是什么?您是否建议创建一个名为“Active”的列,并将其值设置为 1 或 0,1 表示活动,0 表示删除和隐藏。如果重要的话我也在使用 sqlalchemy 。
您可以隐藏真实的表,创建视图并使用规则进行插入、更新和删除。
假设您有一个会话表。我将创建一个名为session_table 的表,其中包含所有数据和“活动”列。然后你有一个名为 session 的视图(CREATE view session AS SELECT [all fields without active] FROMSessions_table WHERE active = TRUE),正如 Greg 提到的。
现在你可以创建一个规则:如果你想删除会话中的一行,你想更新sessions_table中的一行:
创建规则delete_session ON 删除会话执行更新sessions_table SET active = FALSE WHERE id = OLD.id;
要插入,您需要:
创建规则 insert_session ON INSERT TO 会话 执行 INSTEAD INSERT INTO session_table (..., active) VALUES(..., TRUE);
最后我们有
在更新会话时创建规则 update_session 执行 INSTEAD UPDATEsession_table SET ... WHERE id = new.id AND active = TRUE;
现在,您可以完全在会话上调用工作,而不必费心处理活动列。
| 归档时间: |
|
| 查看次数: |
4020 次 |
| 最近记录: |