gpt4 book ai didi

sql - 防止更新不存在的行

转载 作者:行者123 更新时间:2023-12-04 19:15:26 25 4
gpt4 key购买 nike

在工作中,我们有一个表格来保存设置,它基本上包含以下列:

  • PARAMNAME
  • VALUE

  • 大多数情况下会添加新设置,但在极少数情况下,会删除设置。不幸的是,这意味着之前可能已更新此值的任何脚本将继续这样做,尽管更新会导致“ 0 rows updated”并导致意外行为。

    这种情况是最近通过回归测试失败发现的,但只是在对系统中数据不同的原因进行了大量调查之后才发现的。

    所以我的问题是: 当更新导致更新零行时,有没有办法生成错误条件?

    以下是我想到的一些选项,但没有一个是真正理想的:
  • PL/SQL 包装器,它注意到更新失败并抛出异常。
  • 不理想,因为它不会阻止任何人/脚本手动进行更新。
  • 表上引发异常的触发器。
  • 与我们目前逐步淘汰触发器的政策背道而驰。
  • 每次删除设置时都需要更新触发器并维护过时设置列表(如果进行排除)。
  • 变异表可能有问题(如果通过查询当前存在的设置进行包含)。
  • 最佳答案

    PL/SQL 包装器对我来说似乎是最好的选择。除了生成序列和插入历史记录外,触发器是一个很好的逐步淘汰的东西。

    如果您担心有人手动更新而不是使用 PL/SQL 包装器,只需限制用户角色,使其对表不具有 UPDATE 权限,但对过程具有 EXECUTE 权限。

    关于sql - 防止更新不存在的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10182738/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com