社区
Oracle 高级技术
帖子详情
如何避免oralce insert时等待问题
boy002
2007-01-09 11:37:25
有一个table,其中有一个栏位叫item其为primary key,有其他user对其进行
insert一个值(A),但没有commit,此时我对其进行insert值(A),如何使我
直接跳过而不必等待其他user完成teansaction后执行
...全文
337
7
打赏
收藏
如何避免oralce insert时等待问题
有一个table,其中有一个栏位叫item其为primary key,有其他user对其进行 insert一个值(A),但没有commit,此时我对其进行insert值(A),如何使我 直接跳过而不必等待其他user完成teansaction后执行
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
tgm78
2007-01-11
打赏
举报
回复
看来楼主属于“你有一个带主键的表,或者表上有唯一的约束,但两个会话试图用同样的值插入一行。如果这样,其中的一个会话就会阻塞,直到另一个会话提交或者回滚为止:如果另一个会话提交,则阻塞的会话会收到一个错误,指出存在一个重复值;倘若另一个会话会滚,则阻塞的会话会成功。”情况
boy002
2007-01-11
打赏
举报
回复
谢谢大家的关注,特别是wiler(@_@),我已经找到解决方法,利用rdbms_lock解决.
tgm78
2007-01-09
打赏
举报
回复
oracle数据库是要保证一致性读取的。
别的session没有commit的话,是不会写入数据文件的,在内存中。
所以,你的session是否commit和别的session是否commit无关
sten
2007-01-09
打赏
举报
回复
marking
wiler
2007-01-09
打赏
举报
回复
insert 语句是没有nowait的
对不起
转摘:
阻塞的insert
insert的阻塞不多见。最常见的情况是,你有一个带主键的表,或者表上有唯一的约束,但两个会话试图用同样的值插入一行。如果这样,其中的一个会话就会阻塞,直到另一个会话提交或者回滚为止:如果另一个会话提交,则阻塞的会话会收到一个错误,指出存在一个重复值;倘若另一个会话会滚,则阻塞的会话会成功。还有一种情况,可能多个表通过引用完整性约束相互链接。对子表的插入可能会阻塞,因为它所依赖的父表正在创建或删除。
如果允许最终用生成主键/唯一列值,就有可能发生insert阻塞。为避免这种情况,最容易的做法是使用一个序列来生成主键/唯一列值。
如果无法使用序列,可以使用手工锁来避免这个问题,这里的手工锁通过内置的DBMS_LOCK包来实现
tgm78
2007-01-09
打赏
举报
回复
不需要等待直接报错,可以加上nowait。
wiler
2007-01-09
打赏
举报
回复
加 nowait
Oracle入门课程
12、Oracle集合运算 13、Oracle视图 14、Oracle序列 15、Oracle索引 16、Oracle基本语法 17、Oracle数据类型 18、Oracle变量 19、Oracle运算符 20、Oracle条件控制 21、Oracle循环 22、Oracle循环控制 23、Oracle...
Oracle
insert
all 详解
文章目录1 概述2
insert
的两种形式2.1
insert
first2.2
insert
all3 数据一致性(同
时
插入)2.1 验证:
insert
into 数据不一致2.2 验证:
insert
all 数据一致 1 概述 1. 作用:'正确、高效' 的将 '同一批数据' 插入...
Oracle
insert
hang引发的行锁
等待
问题
描述: 客户方前台应用某个操作hang住,无报错也未有操作正常结束提示。 查看锁信息如下: SQL> with lk as (select blocking_instance||'.'||blocking_session blocker, inst_id||'.'||sid waiter 2 ...
Oracle
insert
into太慢
insert
into太慢
insert
into太慢?Roger 带你找真凶 运营商客户的计费库反应其入库程序很慢,应用方通过监控程序发现主要慢在对于几个表的
insert
操作上。按照我们的通常理解,
insert
应该是极快的,为什么会很慢呢?...
oracle
insert
into select写法
INSERT
INTO T_MONITOR_USER_INFO ( METER_NO, CONSUMER_NO, USER_INFO, COURT_ID ) select * from ( select distinct METER_NO,CONSUMER_NO,'wy' as USER_INFO,EPU_COURT as COURT_ID from T_METER where C_...
Oracle 高级技术
3,491
社区成员
18,714
社区内容
发帖
与我相关
我的任务
Oracle 高级技术
Oracle 高级技术相关讨论专区
复制链接
扫一扫
分享
社区描述
Oracle 高级技术相关讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章