我的问题是如何为可变长度数组列中的某个索引设置默认值。我正在尝试将其中一个位置的值设置为默认字符串'false'。
原因是我希望能够在查询中使用 where 子句来过滤位置值为“true”的项目(我正在手动将特定的项目设置为 true),但没有让我的其余数据默认为 false值我的查询没有获取任何数据。
如果这令人困惑,请告诉我,我会尝试清除它..提前谢谢
我的问题是如何为可变长度数组列中的某个索引设置默认值。我正在尝试将其中一个位置的值设置为默认字符串'false'。
原因是我希望能够在查询中使用 where 子句来过滤位置值为“true”的项目(我正在手动将特定的项目设置为 true),但没有让我的其余数据默认为 false值我的查询没有获取任何数据。
如果这令人困惑,请告诉我,我会尝试清除它..提前谢谢
通常,列默认值适用于整个列 - 在您的情况下适用于整个数组。
您必须为此编写触发器。但你可能不需要任何这些。我引用你的问题:
...但是如果我的其余数据在该值上默认为 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 中)或在查询中具有附加条件的列...