特定の条件が発生した場合、フィールドを MySQL 関数の値に設定したいと考えています
NOW()
。状態は、更新の直前に判別可能です (たとえばIInterceptor.OnSave
、 またはSession.SaveOrUpdate(myObj)
)。このアクションは、他のフィールドも更新される NHibernate の Update ステートメントで発生する必要があります。
結果の SQL は次のようになります。
UPDATE myTable
SET myStringCol = 'someVal', myDateCol = NOW()
WHERE myId = 123;
次の制約を満たす必要がありますが、実行可能なすべてのソリューションを使用します。
- 更新前にクエリ
NOW()
を実行すると、不要なリクエストでサーバーがフラッディングされます - 残念ながら、SP やトリガーを使用することはできません。
- .Net DateTime を使用することはできません。サーバー時間でなければなりません。
- 条件により、テーブル列にデフォルト値を使用することはできません
- create、update、delete (nhforge.org/doc/nh/en/index.html 17.3) のためのカスタム SQL の可能性は知っていますが、条件を実装するにはどうすればよいですか?
- MySQL 5.1 / 5.5 / 5.6 の使用
- 最新の NH 3.3.2 の使用