2013-08-02 100 views
1

爲這個主題的多個問題道歉。我正在嘗試更新基於表中其他列的列,到目前爲止似乎沒有任何工作。我嘗試updateWhere然後rawSQL更新(Ambiguous Type Error When Using RawSql Update),但都有問題。避免在RawSQL中自動擴展列

updateWhere不允許其他列名稱(僅值),以便排除。

我試着用更新的rawSQL,但它會自動擴展打破更新的所有實體名稱。如果有辦法阻止它擴展列名(沒有把??不能解決這個問題),那將是完美的。例如,如果我這樣做:Update table SET X = Y - ? [input values],它創建UPDATE table.f1, table.f2, etc. SET X = Y - ? [input values]

這是我想作爲管理員在後臺運行的查詢之一,所以我不在乎類型安全。如果有一種盲目執行SQL字符串的方法,那也可以。

我想要做的是:SET X =(Y - 常數)。任何建議將不勝感激。

謝謝你!

回答

1

我還沒有嘗試過自己,但從閱讀模塊文檔,我認爲rawExecute是你在找什麼。

您可能還需要提交persistent的錯誤報告。我不認爲rawSql應該爲除??之外的任何內容進行列名擴展。至少,這是文檔中的遺漏,即使它是所需的行爲。

+0

謝謝!它在rawExecute下正常工作,我在通話結束時刪除了類型簽名。我可以用一個全新的Yesod項目重現這個問題,所以我會報告它。 – Ecognium

+0

這裏報告了這個問題:https://github.com/yesodweb/yesod/issues/582 – Ecognium