无法使用 sysdate 执行更新查询 - ORACLE
Not able to perform UPDATE query with sysdate - ORACLE
我正在尝试 运行 以下相当简单的 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
.
table结构是
PROJECT_ID NUMBER
SNAPSHOT_DATESTAMP DATE
SNAPSHOT_TYPE VARCHAR2(20 BYTE)
BUG_NO NUMBER
BUG_STATUS VARCHAR2(100 BYTE)
这很奇怪,因为每个 运行 的 sysdate 应该不同,而且它永远不会遇到 "unique constraint violation" 错误。
主键是PROJECT_ID
、BUG_NO
、SNAPSHOT_DATESTAMP
和SNAPSHOT_TYPE
的组合。这意味着您允许(并且可能有!)多行具有相同的项目 ID、错误编号和快照类型,但来自不同的日期。您的 update
语句将尝试将给定项目的所有快照日期、错误编号和状态设置为同一日期(当前日期),从而破坏唯一性并因违反约束而失败。
我正在尝试 运行 以下相当简单的 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
.
table结构是
PROJECT_ID NUMBER
SNAPSHOT_DATESTAMP DATE
SNAPSHOT_TYPE VARCHAR2(20 BYTE)
BUG_NO NUMBER
BUG_STATUS VARCHAR2(100 BYTE)
这很奇怪,因为每个 运行 的 sysdate 应该不同,而且它永远不会遇到 "unique constraint violation" 错误。
主键是PROJECT_ID
、BUG_NO
、SNAPSHOT_DATESTAMP
和SNAPSHOT_TYPE
的组合。这意味着您允许(并且可能有!)多行具有相同的项目 ID、错误编号和快照类型,但来自不同的日期。您的 update
语句将尝试将给定项目的所有快照日期、错误编号和状态设置为同一日期(当前日期),从而破坏唯一性并因违反约束而失败。