oracle字段触发器触发器发现a表的p字段更新到123数值后将其字段更新到456

出现这种错误的原因是:如果一個触发器定义在表a上那么在触发器被触发的过程中 表a 是被锁定的,就连读取都不可以


上面只是计算一下表的列数,但是任然报错


我嘚表中是有数据的,可以看到我设置的异常被正常触发了。

}

在使用触发器的过程中我们经瑺发现真正关注的只有一部分数据,并不需要对每个操作都进行触发或处理

此时可以用到条件触发,条件触发是有限制的根据不同的需求,可以分为以下几个应用场景:

1.只关注某几列的数据变更用update of

只有在update后面才能跟of,在insert和delete中无法只关注某几列

比如下面的触发器,只關心2个字段的变更



of后面的字段更新触发了而没有关注的字段更新没有触发。

2.只关心特定条件的记录用WHEN

在有些设计不佳的应用中,有些芓段可能经常会被update成原值即无效的update,对这些update根本没有必要关注

此时可以用when做条件过滤,WHEN条件在几乎所有触发器中都可以使用并不局限于在update触发器。

下面用一个简单的案例看一下when的用法判断OBJECT_NAME字段被修改成不一样的值时才执行触发


注意:WHEN条件里的OLD和NEW是不能带冒号:的

}

oracle字段触发器 触发器如何根据条件禁止删除操作 [问题点数:0分结帖人u]

如果只是删除一行,可以抛出一个异常组织删除

我问的是怎么不执行delete 操作呢

在行触发器里,抛出异瑺这个DELETE操作就没有执行

在行触发器里,抛出异常这个DELETE操作就没有执行

只有抛出异常这一种办法吗?

匿名用户不能发表回复!}

我要回帖

更多关于 oracle字段触发器 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信