出现这种错误的原因是:如果一個触发器定义在表a上那么在触发器被触发的过程中 表a 是被锁定的,就连读取都不可以
上面只是计算一下表的列数,但是任然报错
我嘚表中是有数据的,可以看到我设置的异常被正常触发了。
出现这种错误的原因是:如果一個触发器定义在表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是不能带冒号:的,
如果只是删除一行,可以抛出一个异常组织删除
我问的是怎么不执行delete 操作呢
在行触发器里,抛出异瑺这个DELETE操作就没有执行
只有抛出异常这一种办法吗?
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。