使用状态标记SQL数据库中的行

时间:2015-05-28 10:15:36

标签: sql postgresql

我们在PostgreSQL中有一些表格,其中包含客户交易等详细信息,其中我们有大量旧数据但新数据不断涌入。它可能看起来像:

| id |   timestamp   | cost  | tax  |
| 0  | 1432807913984 | 20.10 | 3.20 |
...

我们一群人以特定的方式使用这些数据,我们希望每个人都能跟踪哪些行用于我们自己的目的。

一个例子可能是,我们决定将机器学习应用于事务表,并跟踪哪些行已经学习,一列用于指示它被用于此目的。

稍后,需要一个新任务将事务表用于另一个后处理任务。另一栏是在交易中制作的,表明它是否已被使用。

是否有任何约定用于这些场景?

1 个答案:

答案 0 :(得分:0)

我不确定约定,但肯定可以通过添加新列来使用数组数据类型:

alter table table_name add column markers text[];

要将记录标记为已处理,您需要运行:

update table_name set markers = coalesce(markers, array[]::text[]) || array['some_marker'] where ...;

这将为现有标记添加新标记。

检查记录是否标有some_marker run:

select * from table_name where 'some_marker' = any(markers);

有关postgresql中数组的更多信息,请参阅: http://www.postgresql.org/docs/9.4/static/arrays.htmlhttp://www.postgresql.org/docs/9.4/static/functions-array.html