当前位置: 代码迷 >> Oracle管理 >> 运用for update更新删除一个字段中的值出现触发器出错
  详细解决方案

运用for update更新删除一个字段中的值出现触发器出错

热度:13   发布时间:2016-04-24 05:03:23.0
使用for update更新删除一个字段中的值出现触发器出错
在ORACLE中,执行如下语句删除一个字段中的值时出现触发器出错的错误,出现这种情况的原因有哪些?
select a.cover_direction from c_btssitemanager a
where a.cover_direction is not null
for update



------解决方案--------------------
使用for update语句会锁定特定的行,因为你后面加了where a.cover_direction is not null
,所以满足条件的都被锁了,你删除的字段为null的值,当然会报错。

因为当这些行被锁定后,其他会话可以选择这些行,但不能更改或删除这些行,直到该语句的事务被commit语句或rollback语句结束为止。
------解决方案--------------------
探讨
使用for update语句会锁定特定的行,因为你后面加了where a.cover_direction is not null
,所以满足条件的都被锁了,你删除的字段为null的值,当然会报错。

因为当这些行被锁定后,其他会话可以选择这些行,但不能更改或删除这些行,直到该语句的事务被commit语句或rollback语句结束为止。

------解决方案--------------------
嗯啊,程式中不要亂用這個,不然會影響其他用戶,別人會卡在那裡,以為死機了什麽的。
探讨

使用for update语句会锁定特定的行,因为你后面加了where a.cover_direction is not null
,所以满足条件的都被锁了,你删除的字段为null的值,当然会报错。

因为当这些行被锁定后,其他会话可以选择这些行,但不能更改或删除这些行,直到该语句的事务被commit语句或rollback语句结束为止。

------解决方案--------------------
嗯啊,程式中不要亂用這個,不然會影響其他用戶,別人會卡在那裡,以為死機了什麽的。
探讨

使用for update语句会锁定特定的行,因为你后面加了where a.cover_direction is not null
,所以满足条件的都被锁了,你删除的字段为null的值,当然会报错。

因为当这些行被锁定后,其他会话可以选择这些行,但不能更改或删除这些行,直到该语句的事务被commit语句或rollback语句结束为止。
  相关解决方案