在工作中,我们有一个表格来保存设置,它基本上包含以下列:
PARAMNAME
VALUE
大多数情况下会添加新设置,但在极少数情况下会删除设置。不幸的是,这意味着任何先前可能已更新此值的脚本将继续这样做,尽管更新会导致 " 0 rows updated
" 并导致意外行为。
这种情况最近因回归测试失败而出现,但只是在对系统中的数据为何不同的原因进行了大量调查之后。
所以我的问题是:当更新导致零行更新时,有没有办法生成错误条件?
以下是我想到的一些选项,但没有一个是真正可取的:
- PL/SQL 包装器,它注意到失败的更新并引发异常。
- 不理想,因为它不会阻止任何人/脚本手动进行更新。
- 引发异常的表上的触发器。
- 违背了我们目前逐步淘汰触发器的政策。
- 每次删除设置时都需要更新触发器并维护过时设置列表(如果进行排除)。
- 变异表可能存在问题(如果通过查询当前存在的设置来包含)。