Date类型的主键在更新行时导致问题

时间:2015-04-17 10:00:16

标签: oracle oracle11g composite-primary-key

我们有一个带有复合键的表(varchar(64)和Date)。这在我们的其他测试环境中运行良好,但是在我们的验收测试环境(和数据库)中,当更新行时,我们得到一个错误,表示没有行受到影响。据我们所知,环境中的所有内容和数据库都是一样的。调用客户端是.NET(使用ODP.NET),数据库是Oracle 11g。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

Oracle DATE数据类型在内部存储DATE和TIME。如果使用仅指定DATE的WHERE子句进行更新,则时间组件默认为午夜时间。

因此,由于时间的变化,您在WHERE子句中提供更新的DATE可能与表中存储的DATE不匹配。

我认为这可能是个问题。你可以用它验证吗。

如果您只想验证没有TIME值的DATE组件,那么您可以使用TO_CHAR函数来获取它 - 如此处所示 -

更新......设定...... 在哪里TO_CHAR(SYSDATE,'DD-MON-YYYY')= '10 -DEC-2014'