如果出现某些情况,我想将一个字段设置为 MySQL 函数的值
NOW()
。条件可在更新前不久确定(例如IInterceptor.OnSave
或Session.SaveOrUpdate(myObj)
)。此操作应该发生在 NHibernate 的 Update 语句中,其中其他字段也被更新。
生成的 SQL 可能与此类似:
UPDATE myTable
SET myStringCol = 'someVal', myDateCol = NOW()
WHERE myId = 123;
应满足以下约束条件,但我将采用所有可行的解决方案:
- 在更新之前进行查询
NOW()
会使服务器充满不必要的请求 - 不幸的是,无法使用 SP 或触发器
- 无法使用.Net DateTime.Now,它必须是服务器时间
- 由于这些条件,无法对表列使用默认值
- 我知道用于创建、更新和删除的自定义 SQL 的可能性(nhforge.org/doc/nh/en/index.html 17.3),但是如何实现条件?
- 使用 MySQL 5.1 / 5.5 / 5.6
- 使用最新的 NH 3.3.2