扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
在对指定表做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 b.object_name, t.*
from v$locked_object t, user_objects b
where t.object_id = b.object_id
这个和锁定机制没什么关系吧?你的需求只需要逻辑标识就可以满足了。
可以设定一个 锁定状态的字段,例如 LOCK 等等,名字你自己根据业务场景自己取了。当提交领导审批这步之后,LOCK字段设置一个值,例如1,为锁定状态,其他业务操作时先取得此字段状态是否为1,为1不可修改。
领导批准了之后,记录不可修改,LOCK=1不动,如拒绝,LOCK=0,可重新修改。
这样就可以满足你的需求了,采用锁机制并不能满足你的要求。因为你不知道领导什么时候去审批通过,你总不能这一段时间之内都占用ORACLE的锁吧?这是不合理的。
希望能对你有帮助。
lock table 表名 exclusive mode nowait; -- 锁整个表
select * from 表名 where XXX for update nowaitl -- 锁符合条件的记录
锁表:LOCK TABLE tablename IN 锁模式 MODE;
解锁:commit或rollback;
锁模式有以下几种:
ROW SHARE
ROW SHARE permits concurrent access to the locked table but prohibits users from locking the entire table for exclusive access. ROW SHARE is synonymous with SHARE UPDATE, which is included for compatibility with earlier versions of Oracle Database.
ROW EXCLUSIVE
ROW EXCLUSIVE is the same as ROW SHARE, but it also prohibits locking in SHARE mode. ROW EXCLUSIVE locks are automatically obtained when updating, inserting, or deleting.
SHARE UPDATE
See ROW SHARE.
SHARE
SHARE permits concurrent queries but prohibits updates to the locked table.
SHARE ROW EXCLUSIVE
SHARE ROW EXCLUSIVE is used to look at a whole table and to allow others to look at rows in the table but to prohibit others from locking the table in SHARE mode or from updating rows.
EXCLUSIVE
EXCLUSIVE permits queries on the locked table but prohibits any other activity on it.
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流