由於我從物化視圖Matview
中拉取了數千條記錄,我想用find_each
將其分解成批以釋放內存。如何運行ActiveRecord`find_each`到postgres中的物化視圖
然而,當我運行以下命令:
Matview.where('p_id > 100').find_each {|m| m }
我得到以下eror:
PG::SyntaxError: ERROR: zero-length delimited identifier at or near """"
經研究,我發現,你不能沒有主鍵的表運行find_each
。
我嘗試使用添加一個唯一的ID Matview
:
CREATE UNIQUE INDEX index_mv ON matview(p_id)
而成功,這並不能代替主鍵。
我試着用下面的添加主要約束我的物化視圖:
ALTER MATERIALIZED matview ADD CONSTRAINT mv_pk primary key (p_id) disabled
但是失敗了。
所以一般來說,我的問題是,如何在物化視圖上運行find_each
,或者具體地說,我如何將主鍵添加到物化視圖以便我可以運行find_each
?
編輯:爲清楚起見,我不Matview
有id
列。如果我有一個,我聽說它可能被活動記錄識別爲默認主鍵,但我沒有測試過。
哇這麼簡單。謝謝! – allenwlee 2015-03-13 17:50:51