我们有一个带有复合键的表(varchar(64)和Date)。这在我们的其他测试环境中运行良好,但是在我们的验收测试环境(和数据库)中,当更新行时,我们得到一个错误,表示没有行受到影响。据我们所知,环境中的所有内容和数据库都是一样的。调用客户端是.NET(使用ODP.NET),数据库是Oracle 11g。有什么想法吗?
答案 0 :(得分:1)
Oracle DATE数据类型在内部存储DATE和TIME。如果使用仅指定DATE的WHERE子句进行更新,则时间组件默认为午夜时间。
因此,由于时间的变化,您在WHERE子句中提供更新的DATE可能与表中存储的DATE不匹配。
我认为这可能是个问题。你可以用它验证吗。
如果您只想验证没有TIME值的DATE组件,那么您可以使用TO_CHAR函数来获取它 - 如此处所示 -
更新......设定...... 在哪里TO_CHAR(SYSDATE,'DD-MON-YYYY')= '10 -DEC-2014'