0

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

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

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

4

1 回答 1

2

通常,列默认值适用于整个列 - 在您的情况下适用于整个数组。

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

...但是如果我的其余数据在该值上默认为 false,我的查询不会获取任何数据。

如果您使用以下方式查询,您可能可以避免这种情况:

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

(包括所有情况,该标志不是“真”,甚至是NULL)而不是:

arr[5] <> 'true'

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

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

重要的部分是WHERE条款。您可以使用列来代替col1可能涵盖整个查询(尤其是在 v9.2 中)在查询中具有附加条件的列...

于 2013-01-09T00:04:36.337 回答