oracle什么时候需要commit

oracle什么时候需要commit,第1张

DML语言,比如update,delete,insert等修改表中数据的需要commit

DDL语言,比如create,drop等改变表结构的,就不需要写commit(因为内部隐藏了commit)

DDL 数据定义语言:

create table 创建表

alter table 修改表

drop table 删除表

truncate table 删除表中所有行

create index 创建索引

drop index 删除索引

执行DDL语句时,在每一条语句前后,oracle都将提交当前的事务。如果用户使用insert命令将记录插入到数据库后,执行了一条DDL语句(如create

table),此时来自insert命令的数据将被提交到数据库。当DDL语句执行完成时,DDL语句会被自动提交,不能回滚。

DML 数据 *** 作语言:

insert 将记录插入到数据库

update 修改数据库的记录

delete 删除数据库的记录

当执行DML命令如果没有提交,将不会被其他会话看到。除非在DML命令之后执行了DDL命令或DCL命令,或用户退出会话,或终止实例,此时系统会自动

发出commit命令,使未提交的DML命令提交。

oracle的commit就是提交数据(这里是释放锁不是锁表),在未提交前你前面的 *** 作更新的都是内存,没有更新到物理文件中。

执行commit从用户角度讲就是更新到物理文件了,事实上commit时还没有写date file,而是记录了redo log file,要从内存写到data物理文件,需要触发检查点,由DBWR这个后台进程来写,这里内容有点多的,如果不深究的话你就理解成commit即为从内存更新到物理文件。

锁有很多种,一般我们关注的都是DML *** 作产生的,比如insert,delete,update,select...for update都会同时触发表级锁和行级锁

补充:对的,insert以后commit之前是锁表的状态,其他事务无法对该表进行 *** 作。

1.

commit_form和commit

都对form和数据库进行提交。针对form上面的数据变动提交到后台数据库,同时数据库提交数据。

2.

do_key('commit_form')

它会首先执行key-commit触发器里面的代码,如果没有这个触发器,则会做commit_form一样的 *** 作。

3.

forms_dll('commit')

只针对代码中insert、update、delete语句进行提交,form上面的数据不提交。

dg

里面提到:

replace

commit

with

do_key('commit_form'),

this

routine

raises

the

exception

form_trigger_failure

if

there

is

an

invalid

record.

commit时触发器执行顺序:

(1).key-commit

(2).pre-commit

(3).pre/on/post

delete

(4).pre/on/post

update

(5).pre/on/post

insert

(6).on-commit

(7).post

database

commit

4.

quietcommit

oracle

form

"悄悄"

提交。如果使用commit_form的话会d出信息提示"没有修改需要保存"或者"xxx记录已保存"。如果你不想提示出现,则可以调用函数

app_form.quietcommit。由于是一个function,

所以需要定义一个变量用来接收返回值,

返回值类型为boolean,当true的时候就说明成功,

否则commit失败。

将系统的消息级别改为较低级别也可调用如下过程:procedure

docommit

is

old_level

varchar2(2)

begin

old_level

:=

name_in('system.message_level')

copy('5',

'system.message_level')

commit

copy(old_level,

'system.message_level')

end


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/7921720.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-11
下一篇2023-04-11

发表评论

登录后才能评论

评论列表(0条)

    保存