如何用DQL更新Documentum锁定记录?能否解锁更新后重锁?
如何解锁Documentum记录、更新后重新锁定
当然可以先解锁目标记录,完成更新后再重新锁定它!不过得注意操作的连贯性,避免中间被其他用户抢占这条记录的操作权限。下面是具体的操作步骤和注意事项:
步骤1:解锁锁定的记录
首先执行解锁语句,前提是你拥有该记录的解锁权限(比如你是锁定该记录的用户,或者具备管理员权限):
UNLOCK dm_document OBJECT '90000000000000001' GO
步骤2:执行更新操作
这就是你原本要运行的更新语句:
UPDATE dm_document objects SET keywords = 'D' WHERE r_object_id = '90000000000000001' GO
步骤3:重新锁定记录
更新完成后,用排他锁(EXCLUSIVE)重新锁定记录,防止其他用户修改:
LOCK dm_document OBJECT '90000000000000001' EXCLUSIVE GO
重要注意事项
- 尽量批量执行:把这三条语句放在同一个脚本里一次性运行,减少中间的时间间隙,避免其他用户在你解锁后、重新锁定前修改这条记录。完整脚本如下:
UNLOCK dm_document OBJECT '90000000000000001' GO UPDATE dm_document objects SET keywords = 'D' WHERE r_object_id = '90000000000000001' GO LOCK dm_document OBJECT '90000000000000001' EXCLUSIVE GO
- 确认锁定权限:如果你不是锁定该记录的用户,可能需要联系系统管理员协助解锁,普通用户无法解锁他人锁定的记录。
- 提前查看锁定信息:可以先查询记录的锁定详情,确认锁定者和锁定类型,避免不必要的冲突:
SELECT r_object_id, lock_owner, lock_type FROM dm_document WHERE r_object_id = '90000000000000001' GO
你遇到的[DM_SYSOBJECT_E_LOCKED]报错,就是因为目标记录当前被其他用户持有锁,导致你的更新操作被阻塞,按照上面的流程就能解决这个问题啦。
内容的提问来源于stack exchange,提问作者aduguid
相关产品推荐
相关产品推荐

