![]() |
1
5
不,您不能动态引用:old和:new值。正如Shane所建议的,如果这能让生活更轻松,你可以编写代码来生成静态触发代码。此外,你可以将“在这里做点什么”变成一个打包过程,这样你的触发器就会变成:
(顺便说一句,你可以抛弃毫无意义的REFERENCING条款)。 |
![]() |
2
4
我不确定你是否能做你想做的事情。你不想在PL/SQL代码中显式命名表列的原因是什么?如果表字段经常更改,您可以构建PL/SQL,为每个表动态构建PL/SQL触发器(每个表中都有显式的字段名)。每当表发生变化时,您都可以运行PL/SQL来生成新的触发器。 |
![]() |
3
4
您是否基本上试图构建自己的系统来审核表中的所有更改?(我最好的猜测是,你可能会对任意列的新旧值做些什么。)如果是这样,你可能想研究一下Oracle自己的审计功能。 |
![]() |
4
2
我也遇到了类似的问题,尽管是在MSSQL中。 我的解决方案是编写一个存储过程,迭代表和列信息(通过字典视图或自定义存储库)并生成所需的触发器。仅当数据模型发生变化时,才需要运行该过程。 优点是,您不必在每次更新中浏览元模型,而是提前生成触发器。 |
|
user7413279 · 创建SQL触发器 8 年前 |
![]() |
Joseph Farrar · 如何在插入时修改数据 8 年前 |
![]() |
Amir Pashazadeh · 检查Oracle中两个表的约束 8 年前 |
![]() |
genespos · 什么会导致触发器失败,如果失败会发生什么 9 年前 |