Oracle中的commit与rollback

SQL语言分为五大类:

DDL(数据定义语言:DataDefinitionLanguage) - Create、Alter、Drop 这些语句自动提交,无需用Commit提交。

DQL(数据查询语言:DataQueryLanguage) - Select 查询语句不存在是否提交问题。

DML(数据操纵语言:DataManipulationLanguage) - Insert、Update、Delete 这些语句需要Commit才能提交。

DTL(事务控制语言:TransactionControlLanguage) - Commit、Rollback 事务提交与回滚语句。

DCL(数据控制语言:DataControlLanguage) - Grant、Revoke 授予权限与回收权限语句。


1.commit

在数据库的插入(insert)、删除(delete)和修改(update)操作时,只有当事务在提交到数据库时才算完成。在Oracle 数据库中,在事务提交前,只有操作数据库的当前session能有权看到所做的事情,别的session在另外一个session最后提交完成时才能看见所修改的内容。commit就是确定提交的意思,比如你用update更新表中一条记录,而不commit,那么别的账户在查询这个表时就查询不到你update的记录,自己是可以查询到的;而commit后则其他账户就能查询到你update的记录了。

2.rollback

rollback:就是回退的意思,比如你用update更新表中一条记录,这时你查询这个表时,则发现表已经更新(注意别的用户查询这个表会发现表未更新);再rollback后,你再查询表时,发现表还是更新之前的样子。

在没有进行commit之前,是对内存的操作,可以rollback;如果commit,则修改了物理地址的数据,则不能rollback了。
3.作用的范围与注意点

两者只对insert、update、delete(DML数据操纵语句)操作有效。

注意点:

3.1、先commit再rollback,则rollback相当于不起作用。

3.2、若现delete再select再rollback,,则rollback会撤回delete操作。

3.3、其他用户查询你的表时看到的是commit之后的表,而你看到的是最新操作的表。

相关推荐
alpha xu8 小时前
Qwen智能体qwen_agent与Assistant功能初探
数据库·人工智能·python·oracle·智能体·千问agent
文牧之11 小时前
Oracle 通过 ROWID 批量更新表
运维·数据库·oracle
Bing@DBA12 小时前
Oracle 19c 静默安装
数据库·oracle
听雪楼主.16 小时前
Oracle adg环境下调整redo日志组以及standby日志组大小
oracle·adg
消失在人海中1 天前
oracle 会话管理
数据库·oracle
小Tomkk1 天前
2025年5月15日前 免费考试了! Oracle AI 矢量搜索专业认证
数据库·人工智能·oracle
菲兹园长1 天前
MySql(基础)
数据库·mysql·oracle
潇湘秦2 天前
Oracle非归档模式遇到文件损坏怎么办?
数据库·oracle
杨云龙UP2 天前
SQL Server 中的 GO 及其与其他数据库的对比
数据库·sql·mysql·oracle·sqlserver
程序员小董2 天前
关于甲骨文(oracle cloud)丢失MFA的解决方案
oracle·mfa·甲骨文·免费账号