-1

PostgreSQL的9.5,Rails的4.2.4,紅寶石2.3.0補丁或更新外鍵(ID)在現有的Rails PostgreSQL表

簡裝的downvote(太羅嗦?)

我試着使用activerecord-import等,同時批量導入數據和尊重關聯並避免重複 - 無濟於事。因此,我想知道導入後是否可以執行,而不是僅在現有記錄中進行關聯。

中心問題:有沒有辦法在表中引入junky,鏈接到無處的外鍵(foreigntable_id),並使用關聯表的原始主鍵(id)更新/替換它們?

UPDATE:d'oh,可以通過調整Rails'update_all生成的SQL來找到。

回答

0

因此,Rails的Model.update_all(id: ...)方法爲更新外鍵(或任何列)的方式提供了一些很好的線索(不知道是否更好的方法)。如果我們有一個投資模型,並表investorshas_manytransactionstransactionsbelongs_toinvestors,並investors表具有唯一name是一樣的,也就是說,transactionsinv_name

UPDATE transactions 
SET investor_id = (SELECT investors.id FROM investors 
        WHERE investors.name = transactions.inv_name) 
WHERE transactions.id IN (SELECT transactions.id FROM transactions)