类型为可变长度数组Postgresql的列中的默认值

时间:2013-01-08 20:07:07

标签: database postgresql variable-length-array

我的问题是如何在可变长度数组列中为某个索引设置默认值。我试图将其中一个位置的值设置为默认为字符串'false'。

原因是我希望能够在查询中使用where子句来过滤位置值为“true”的项目(我手动将特定的设置为true)但没有其余的数据默认为如果该值为false,则我的查询不会获取任何数据。

如果这令人困惑,请告诉我,我会尝试清理它。谢谢提前

1 个答案:

答案 0 :(得分:2)

通常,列默认适用于整个列 - 适用于您的整个数组。

您必须为此编写触发器。但你可能不需要这些。我引用你的问题:

  

...但是没有其他数据在该值上默认为false   我的查询没有获取任何数据。

如果您使用以下命令查询,则可以避免这种情况:

(arr[5] = 'true') IS NOT TRUE

(包括所有案例,其中旗帜不是'真',甚至是NULL)而不是:

arr[5] <> 'true'

如果您需要此查询 fast ,您可以使用部分索引支持它:

CREATE INDEX tbl_special_idx ON tbl (col1) -- potentially more columns
WHERE (arr[5] = 'true') IS NOT TRUE;

重要的部分是WHERE条款。您可以使用代替col1的列来覆盖查询中包含其他条件的整个查询(尤其是在v9.2中) ...