我有一个存储过程,最后我检查错误,如果有错误,我会执行回滚,然后将批处理表上的状态更新为"失败"。当我运行存储过程时,我会定期获得SQLCode 818错误,说"时间戳发生了冲突"。
当我删除更改批处理表上的状态的更新语句时,我不会遇到错误。
执行这些动作的最佳实践是什么,因此我避免遇到错误?
代码部分看起来像这样:
IF v_error_count > 0 THEN
-- Batch failed
ROLLBACK;
UPDATE batch_table bt
SET bt.batch_status = 'FAILED'
WHERE batch_id = input_batch_id;
END IF;
感谢您的任何帮助。
sql代码-818
表明内部时间戳DB2用来确保运行模块之间的一致性匹配当预先编译SQL语句时创建的DBRM版本。
您可以与您的DBA(或您网站上的其他人)核对,因为您必须执行的具体步骤可能会有所不同。对于一般概述,您可以在IBM知识中心上查看本文。