2013-08-02 4 views
1

이 항목에 대한 여러 질문에 사과하십시오. 테이블의 다른 열을 기반으로하는 열을 업데이트하려고하는데 아무 것도 작동하지 않는 것 같습니다. 나는 updateWhere를 시도한 다음 rawSQL을 업데이트 (Ambiguous Type Error When Using RawSql Update)하지만 둘 다 문제가있다.RawSQL의 열 자동 확장 피하기

updateWave 다른 컬럼 이름 (값만)이 허용되지 않으므로 제외됩니다.

업데이트로 rawSQL을 시도했지만 업데이트를 중단시키는 모든 엔티티 이름이 자동으로 확장됩니다. ??가 열 이름을 확장하는 것을 막을 수있는 방법이 있다면 (??)이 문제를 해결하지 못하면 완벽하게 작동합니다. 예를 들어, 내가 수행 할 경우 : Update table SET X = Y - ? [input values]UPDATE table.f1, table.f2, etc. SET X = Y - ? [input values]

을 만듭니다. 이는 관리자로서 백그라운드에서 실행하려는 쿼리 중 하나이므로 유형 안전을 신경 쓰지 않습니다. SQL 문자열을 맹목적으로 실행할 수있는 방법이 있다면 잘 작동합니다.

내가 원하는 것은 : SET X = (Y - Constant). 어떤 제안이라도 대단히 감사하겠습니다.

고마워요!

답변

1

나는 스스로 시험하지는 않았지만, 모듈 문서를 읽는 것으로부터, rawExecute이 당신이 찾고있는 것이라고 생각한다.

persistent에 대한 버그 보고서를 제출해야 할 수도 있습니다. rawSql?? 이외에는 아무것도 열 이름 확장을 수행하지 않는다고 생각합니다. 적어도 원하는 동작 일지라도 문서에서 누락되었습니다.

+0

감사합니다. 그것은 rawExecute와 잘 작동하고 통화가 끝날 때 형식 서명을 제거했습니다. 나는이 문제를 새로운 Yesod 프로젝트로 재현 할 수 있었으므로보고 할 것입니다. – Ecognium

+0

문제를 신고 : https://github.com/yesodweb/yesod/issues/582 – Ecognium