我需要将插入/更新/删除操作从一个表镜像到另一个表。 例如,表 A 上的插入必须复制到表 B 中,对表 A 的更新应用于表 B,从表 A 中删除应用于表 B。 就这么简单,除了 tableB 有 1 个附加列用于常量值,因此需要非常简单的触发器。
我不确定是编写 3 个单独的触发器更好,还是用一个触发器执行所有操作更好。
这适用于 3 个数据库:Sybase ASE、MSSQL 和 Oracle,我希望保持类似的解决方案(因此 3 个数据库适用于所有数据库,或者 1 个数据库适用于所有数据库)。
使用 3 个触发器还是使用 1 个触发器这只是一个偏好问题,还是这两种解决方案都有实际好处?
最佳答案
假设您实际上需要一个触发器,并且表 B 不能简单地定义为表 A 之上的 View ,或者表 B 不能仅使用引用 A 中的行以及常量的外键来定义,则A 无法重新定义以添加附加列(可能具有常量的默认值),一个触发器至少可以让您将所有相关逻辑保留在一个位置,而不是在执行诸如 add 之类的操作时需要更新多个位置但我会对任何涉及两个不同表(反射(reflect)本质上相同的数据)的架构非常警惕。这违反了规范化,增加了系统的 I/O 工作负载,并使整个系统变得更加复杂。
关于sql-server - 插入/更新/删除使用单个触发器还是多个触发器更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9639254/