在对指定表做append *** 作,其他再做truncate时候,会产生锁表,如下验证步骤,
1、创建测试表,
create table test_lock(id number, value varchar2(200));
2、执行append语句;并且不做提交,insert /+append/ into test_lock values(1,1);
3、再次执行清表语句,truncate table test_lock;报锁表错误,
4、查看锁表语句,发现被锁表,
select bobject_name, t
from v$locked_object t, user_objects b
where tobject_id = bobject_id
在 MySQL 中,如果你显式的执行锁定语句(LOCK Tables )
那么你必须一次锁定在解锁之前需要访问的所有表,
而且,如果你以读锁定方式锁定的表,则不能对该表进行写 *** 作,也就是说,你使用什么方式进行的锁定,就只能进行什么方式的 *** 作
甚至如果你在 Query 语句中使用了别名,那么在之前的锁定中也必须使用别名
相当于是版本控制。 几个人对同一个数据库进行修改,最后提交的人可能会抹掉前面人提交的数据。 每个人在 *** 作时打上不同的标记,分出不同的线。这样在数据curd的时候才能知道前面有几个人进行了 *** 作,才能进行数据 *** 作
以上就是关于oracle表在什么情况下会被锁住全部的内容,包括:oracle表在什么情况下会被锁住、mysql数据库中,我用lock锁表后提示错误.劳驾帮忙看一下、tp的数据库lock怎么使用 具体使用场景等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)