【发布时间】:2015-01-14 07:13:41
【问题描述】:
我正在尝试在 ORACLE 中运行以下相当简单的更新语句。
UPDATE PROJECT_BUG_SNAPSHOTS
SET SNAPSHOT_DATESTAMP = sysdate,
SNAPSHOT_TYPE = P_SNAPSHOT_TYPE
WHERE PROJECT_ID = P_PROJECT_ID
AND BUG_NO = P_BUG_NO
AND BUG_STATUS = P_BUG_STATUS;
它抱怨违反了唯一约束。
PK 包含PROJECT_ID,BUG_NO,SNAPSHOT_DATESTAMP,SNAPSHOT_TYPE。
表结构是
PROJECT_ID NUMBER
SNAPSHOT_DATESTAMP DATE
SNAPSHOT_TYPE VARCHAR2(20 BYTE)
BUG_NO NUMBER
BUG_STATUS VARCHAR2(100 BYTE)
这很奇怪,因为每次运行时 sysdate 都应该不同,而且它永远不会遇到“违反唯一约束”错误。
【问题讨论】:
-
sysdate(作为DATE)仅精确到一秒。因此,如果您非常快速地运行多个语句,则不太可能两次获得相同的sysdate值。
标签: oracle sql-update unique-constraint sysdate