我的问题是如何在可变长度数组列中为某个索引设置默认值。我试图将其中一个位置的值设置为默认为字符串'false'。
原因是我希望能够在查询中使用where子句来过滤位置值为“true”的项目(我手动将特定的设置为true)但没有其余的数据默认为如果该值为false,则我的查询不会获取任何数据。
如果这令人困惑,请告诉我,我会尝试清理它。谢谢提前
答案 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中)或 ...