我的問題是如何設置可變長度數組列中某個索引的默認值。我試圖將其中一個位置的值設置爲默認字符串'false'。類型可變長度數組列中的默認值Postgresql
原因是我希望能夠在查詢中有一個where子句來過濾位置值爲'true'的項目(我將特定的項目手動設置爲true),但是沒有其餘的數據默認值在該值上爲false我的查詢沒有獲取任何數據。
如果這是令人困惑讓我知道,我會盡量清除up..Thanks提前
我的問題是如何設置可變長度數組列中某個索引的默認值。我試圖將其中一個位置的值設置爲默認字符串'false'。類型可變長度數組列中的默認值Postgresql
原因是我希望能夠在查詢中有一個where子句來過濾位置值爲'true'的項目(我將特定的項目手動設置爲true),但是沒有其餘的數據默認值在該值上爲false我的查詢沒有獲取任何數據。
如果這是令人困惑讓我知道,我會盡量清除up..Thanks提前
一般來說,列默認是整個列 - 在你的情況下,整個陣列。
您必須爲此編寫觸發器。但你可能不需要這些。我引用你的問題:
...但沒有其餘的我的數據默認值爲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)或有在您的查詢的附加條件......
爲什麼不簡單地將'arr [5]不是真的'或者'arr [5]與DISTINCT'真''不同? –
鏈接到文檔:http://www.postgresql.org/docs/current/static/functions-comparison.html –
@IgorRomanchenko:沒有特別的原因。表達式'(arr [5] ='true')不是真的,而'arr [5]不等於'真''是等價的。 –
你真的應該爲這個表定義和樣本數據。 –