![]() |
1
4
这实际上是个坏主意。SQL不像是您运行的工厂程序语言。SQL“compilation”绑定到物理访问路径计划,这意味着语句被编译成“open rowset with id 1234,seek a record and retrieve its content”计划,并且“1234”是在 汇编 由优化器进行批处理。这意味着,在您计划的过程中,将公共代码移动到过程中所带来的伤害往往大于它所带来的好处。该过程不能绑定到“通用”访问路径,它需要知道它应该查找的用于选择和更新等的实际表和对象。您要么最终在过程中执行动态SQL,要么只移动过程的非数据绑定、通用部分(如计算),这些部分会创建非常复杂的代码,同时还会损害性能 递减 程序可读性。 更明智的做法是使用模板,并通过各种代码生成技术(如XML和XSLT)从这些模板生成触发器。 |
![]() |
2
0
我怀疑元数据/模式
如果您是动态生成触发器和视图的代码,我会说这可能没有什么区别。毕竟,所有触发器和视图都是代码生成的,并且可以在系统获得新功能或核心SP得到改进时重新生成。 只有当触发器和视图是自定义的并且从未重新生成时,共享核心SP才有好处,可以修改和升级核心SP,而不是重新生成视图和触发器。 生成的代码具有可靠的执行计划和更好的绑定,可能会超过重新生成的开销。 |
![]() |
Saijo-Shi · PLpgsql中的更新触发器 10 月前 |
|
user26814368 · Oracle在触发器中过滤错误数据 10 月前 |
![]() |
robertspierre · 在多对多关系中自动删除未引用的行 1 年前 |
![]() |
Martin · 由于活动触发器,无法登录到SQL Server 1 年前 |
![]() |
gonzalo2000 · 脚本在手动运行时有效,但触发器不起作用 1 年前 |
![]() |
yessoos · 在触发的处理程序中使用类属性 1 年前 |