gpt4 book ai didi

database - Oracle 数据库中的冲突触发器

转载 作者:搜寻专家 更新时间:2023-10-30 21:44:52 24 4
gpt4 key购买 nike

我有两个表如下:

  • 部门(alpha、学院等)
  • 类(class)(id、alpha、学院、职称等)

College 和 alpha 按照设计出现在两个表中。我决定稍微去规范化,因为在查看类(class)时总是需要 college 和 alpha。

我有一个触发器在 department 表更新后执行,以便它用新的 alpha 更新 course 表中的所有行和 college 值。我还有一个在更新 course 表之前执行的触发器,以确保用户提交的 alpha-collegedepartment 表中存在 edits;如果该对不存在,则会引发应用程序错误。

这些触发冲突。第二个检查 department 表的新值是否在它们中,但它们还没有,所以它应该失败。

如果第一个触发器先执行,是否可以忽略第二个触发器?在这种情况下,我真的不想执行第二个触发器,因为我知道值在第一个表中。如果那不可能,是否有更好的方法可以在不更改我的架构的情况下执行此操作?

最佳答案

你的第二个触发器听起来只不过是一个外键。删除它并在 course 上创建一个外键约束。这在我的测试中有效。

但是,支持几乎没有好处的非规范化似乎是不必要的工作。如果您只想编写简单的查询,请创建一个连接两个表的 View 并在您的查询中使用它。如果您担心连接性能,我很怀疑这会是个问题,除非您在表上缺少明显的索引。

关于database - Oracle 数据库中的冲突触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5589098/

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