【发布时间】:2019-02-08 19:45:30
【问题描述】:
我正在尝试根据某些条件更新表记录。当我更新少数最近的记录时,它可以正常工作,但是当我为更多的记录或更旧的记录运行它时,它会引发错误 查询:
update table_Name set Col1 = 'C'
where date(TRN_SCH_DPT_DT) < current date - 200 DAYS
工作正常!
update table_Name set Col1 = 'C'
where date(TRN_SCH_DPT_DT) < current date - 100 DAYS
抛出错误 => DB2 SQL 错误:
SQLCODE=-803,SQLSTATE=23505,SQLERRMC=2
注意:我没有更新主键。任何大于 200 的数字都可以正常工作。
【问题讨论】:
-
找出你正在打破的唯一约束,并修复它。对于这种情况,最好使用 MERGE。
-
旁注:您当前的查询可能会忽略您在
TRN_SCH_DPT_DT上可能拥有的任何索引。你最好把条件写成WHERE TRN_SCH_DPT_DT < TIMESTAMP(CURRENT DATE - 100 DAYS)
标签: sql db2 sql-update