首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Oracle SQL中,DELETE语句将由COMMIT在它之后调用的过程中提交吗?

在Oracle SQL中,DELETE 语句的执行结果是否会被后续的 COMMIT 提交取决于事务的上下文。

基础概念

事务:在数据库中,事务是一组必须全部成功完成或全部取消的操作。事务确保数据库从一个一致的状态转移到另一个一致的状态。

COMMITCOMMIT 命令用于永久保存事务中的所有更改到数据库。

相关优势

  • 数据一致性:通过事务和 COMMIT,可以确保数据的完整性和一致性。
  • 错误恢复:如果事务中的任何操作失败,可以回滚整个事务,避免数据库处于不一致状态。

类型与应用场景

  • 自动提交:默认情况下,Oracle 数据库处于自动提交模式,即每条 SQL 语句执行后都会自动提交。
  • 手动提交:可以通过设置 SET AUTOCOMMIT OFF 来关闭自动提交,此时需要显式调用 COMMIT 来保存更改。

遇到的问题及原因

如果在执行 DELETE 后没有调用 COMMIT,那么这些更改将不会被永久保存到数据库中。这是因为在手动提交模式下,更改仅在内存中暂存,直到 COMMIT 被调用。

解决方法

确保在执行 DELETE 后调用 COMMIT 来保存更改。例如:

代码语言:txt
复制
BEGIN;
DELETE FROM employees WHERE department_id = 50;
COMMIT;

或者,如果使用 PL/SQL 块:

代码语言:txt
复制
BEGIN
  DELETE FROM employees WHERE department_id = 50;
  COMMIT;
END;
/

示例代码

以下是一个完整的示例,展示了如何在 Oracle SQL 中使用事务和 COMMIT

代码语言:txt
复制
-- 开启事务
BEGIN;

-- 执行删除操作
DELETE FROM employees WHERE department_id = 50;

-- 提交事务,保存更改
COMMIT;

通过这种方式,可以确保 DELETE 操作的结果被正确提交到数据库中。

总结来说,DELETE 语句在 Oracle SQL 中是否会被 COMMIT 提交取决于是否处于手动提交模式,并且是否显式调用了 COMMIT 命令。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Oracle数据库相关经典面试题

答∶ ORACLE事务在执行第一条可执行的SQL语句时开始,到一条COMMIT、ROLLBACK语句或退出数据库时事务结束。 利用ROLLBACK语句可以在COMMIT命令前随时撤消或回退一个事务。...触发器中能用COMMIT,为什么? 答∶ 在触发器中不能使用COMMIT;等事务控制语句。因为触发器是事务触发的如果有事务控制语句就会影响到触发它的事务。...即连带触发它的语句之前的已经完成的没有提交的语句都要受到影响。这是会影响到数据的一致性的。...悲观锁是通过在sql语句上加入 for update,乐观锁可以通过增加一列version或者timestamp在应用程序中实现,Hibernate采用乐观锁的版本戳。 索引的作用?...答∶ Pl/sql 的块结构包括:定义部分,执行部分,异常处理部分。 Oracle中字符串用什么符号链接?

2.2K20

为什么MySQL默认使用RR隔离级别?

对于数据库的默认隔离级别,Oracle默认的隔离级别是 RC,而MySQL默认的隔离级别是 RR。 那么,你知道为什么Oracle选择RC作为默认级别,而MySQL要选择RR作为默认的隔离级别吗?...在MySQL主从复制过程中,数据的同步通过binlog进行。简单来说,主服务器将数据变更记录到binlog中,然后将binlog同步传输给从服务器。...★即使 Session 1 的删除操作在 Session 2 的插入操作之后提交,由于 READ COMMITTED 的隔离级别,Session 2 的插入操作不会看到 Session 1 的删除操作,...以上两个事务执行之后,会在bin log中记录两条记录,因为事务2先提交,所以insert into t1 values(10,99);会被优先记录,然后再记录delete from t1 where...b 的bin log记录的是SQL语句的原文) 这样bin log同步到备库之后,SQL语句回放时,会先执行insert into t1 values(10,99

22110
  • ✅为什么MySQL默认使用RR隔离级别?

    对于数据库的默认隔离级别,Oracle默认的隔离级别是 RC,而MySQL默认的隔离级别是 RR。那么,你知道为什么Oracle选择RC作为默认级别,而MySQL要选择RR作为默认的隔离级别吗?...在MySQL主从复制过程中,数据的同步通过binlog进行。简单来说,主服务器将数据变更记录到binlog中,然后将binlog同步传输给从服务器。...即使 Session 1 的删除操作在 Session 2 的插入操作之后提交,由于 READ COMMITTED 的隔离级别,Session 2 的插入操作不会看到 Session 1 的删除操作,所以最后数据库中仍然会留下...以上两个事务执行之后,会在bin log中记录两条记录,因为事务2先提交,所以insert into t1 values(10,99);会被优先记录,然后再记录delete from t1 where...b 的bin log记录的是SQL语句的原文)这样bin log同步到备库之后,SQL语句回放时,会先执行insert into t1 values(10,99

    25410

    oracle commit详解

    听我这么说,你或许感觉commit没什么用,其实不然。当你同时执行两条或两条以上的sql语句时,问题就出现了。...这个命令是将数据写到数据库中。如果不执行COMMIT这个命令,那么在你这个session之外的其他session查询的数据是你修改数据之前的数据。而COMMIT之后人家查询的是你修改的数据。...我说过,LGWR是一个同步调用,我们要等待它完成所有写操作。在Oracle 10g Release 1及以前版本中,除PL/SQL以外的所有编程语言都是如此。...PL/SQL引擎不同,要认识到直到PL/SQL例程完成之前,客户并不知道这个PL /SQL例程中是否发生了COMMIT,所以PL/SQL引擎完成的是异步提交。...因此,如果在PL /SQL中提交了100次,然后返回客户,会发现由于存在这种优化,你只会等待LGWR一次,而不是100次。这是不是说可以在PL/SQL中频繁地提交呢?这是一个很好或者不错的主意吗?

    1.6K90

    OTL技术应用

    •otl_stream类     otl_stream类是OTL“流”的概念的具体表现形式,任何通过输入/输出参数使用SQL语句、PL/SQL 块或者是存储过程调用,在C++的编程中都能通过otl_stream...负责创建otl_stream对象并调用open()(解析sql语句)方法。  ...缓冲区大小定义了插入表的逻辑行以及与数据库一次往反交互(one round-trip to the database)过程中从表或视图中查询的逻辑行。...-1:处理异常;>=0:在执行INSERT、DELETE或UPDATE语句时,实际返回的是已处理行数 •otl_exception类        otl_exception类用于描述OTL操作数据时抛出的异常...代替,但是在一个SQL语句中不能使用相同名字的placeholder •在执行INSERT语句的时候,如果数据库中char字段的大小是n,则这个INSERT语句的绑定变量的大小要为n+1;否则当邦定变量的大小为

    2.1K60

    珍藏 | Java 岗位 【数据库】 面试题及答案详解

    数据库的知识,对于开发工程师来讲,也是同样重要,是开发过程中的重中之重,很多的业务逻辑,比如:报表模块等,只要sql语句能写出来,就相当于完成大部分的功能了,这是总结的数据库题库的前30道题,关于数据库的详细优化和集群等知识...用什么来调用? · 存储过程存在于大型数据库系统中,是一个预编译的SQL语句(为了完成特定功能的SQL 语句集),经过第一次编译后再次调用不需要再次编译。...- 优点是: - 允许模块化的设计,就是说只需创建一次,以后在该程序中就可以调用多次。 - 如果某次操作需要执行多次SQL,使用存储过程比单纯SQL语句执行要快。...- Delete语句:删除数据表中的一条或多条记录,也可以删除数据表中的所有记录,但是它的操作对象仍是记录。 - Update语句:用于修改已存在表中的记录的内容。...19:commit在哪里会运用 - Oracle的commit就是DML语句提交数据(这里是释放锁不是锁表),在未提交前你前面的操作更新的都是内存,没有更新到物理文件中。

    3.4K20

    Java基础-JDBC

    JDBC API 提供者:Sun公司 内容:供程序员调用的接口与类,集成在java.sql和javax.sql包中,如 DriverManager类:作用:管理各种不同的JDBC驱动 Connection...4.处理ResultSet结果 ResultSet对象是executeQuery()方法的返回值,它被称为结果集,它代表符合SQL语句条件的 所有行,并且它通过一套getXXX方法(这些get方法可以访问当前行中的不同列...语句 手动启动事务管理 在JDBC中,事务操作缺省是自动提交。...一条对数据库的更新表达式代表一项事务操作 操作成功后,系统将自动调用commit()提交,否则调用rollback()回滚 在JDBC中,事务操作方法都位于接口java.sql.Connection中...之后就可以把多个数据库操作的表达式作为一个事务,在操作完成后调用commit()来进行整 体提交, 倘若其中一个表达式操作失败,都不会执行到commit(),并且将产生响应的异常; 此时就可以在异常捕获时调用

    63930

    深入解析:你听说过Oracle数据库的更新重启动吗?

    既然写操作只能修改当前版本,当写操作执行的过程中,发现要修改的记录发生了变化,破坏了更新发起时刻的一致性,这时就触发了更新重启动,也就是说更新操作会放弃之前的修改,然后重新发起一次新的更新操作。...在会话 2 发起 UPDATE 语句,更新 ID 大于 0 的记录,这时 UPDATE 操作由于会话 1 更新了 ID 为 3 的记录且未提交,会处于挂起状态: SQL> SET SQLP 'SQL2>...中不仅更新了之前存在的三条记录,连更新语句发起之后插入并提交的第四条记录也一起进行了更新,这说明更新重启动发生在第四条记录插入之后。...在会话1,恢复初始的数据情况,然后开始更新数据: SQL1> DELETE T_UPDATE WHERE ID < 1; 1 row deleted....在会话 2,对表中所有的记录的 ID 执行 UPDATE 操作,和上一个案例的唯一差别是,这里没有使用 WHERE 语句: SQL2> UPDATE T_UPDATE SET ID = ID + 0.1

    66940

    事务Transaction

    隔离性(Isolation)-在事务未提交前,它操作的数据,对其他用户不可见。 持久性(Durability)-一旦事务成功完成,该事务对数据库所施加的所有更新都是永久的。...数据库事务的开始和结束 以第一个DML语句的执行作为开始 以下面的其中之一作为结束: commit或rollback语句 DDL或DCL语句(自动提交) 用户会话正常结束–commit 系统异常终了–rollback...中锁作为数据块的一种属性存在 Oracle和Sql Server锁的区别 Sql Server Oracle 并发和读一致性不可兼得,必须牺牲一方 可兼得 因为锁实现方式,事务代价昂贵 没有真正的锁...自治事务 自治事务允许在一个事务中存在独立的事务,它的操作不会对当前事务产生影响。 ?...PL/SQL 过程已成功完成。 从这个例子中,我们看到COMMIT和ROLLBACK的位置无论是在主匿名块中或者在子程序中,都会影响到整个当前事务.

    66210

    技术分享 | 如何计算 MySQL 的 QPSTPS

    SQL = DQL + DML + DDL + DCL,所以 QPS 中的 Q 应该和 SQL 中的 Q 一样,都是广义上的 Query,也就是所有的 SQL 语句。...中文的意思是,Queries 计数表示服务器执行的语句数。与 Questions 计数不同,此变量包括了存储过程中执行的语句。它不计数COM_PING或COM_STATISTICS命令。...MySQL 区别于 Oracle,在 Oracle 里事务是需要显示提交的,必须执行 commit 提交事务。而 MySQL 默认是设置了自动提交的(参数 autocommit=1)。...commit 语句的,复制到从库时,从库回放 SQL,会带 commit,那么从库会有com_commit,从库的 TPS 是真实的。...GTID( Global Transaction Identifier)全局事务标识,其保证为每一个在 master 提交的事务在复制集群中可以生成一个唯一的 ID。

    2.7K30

    Oracle事务和锁机制

    (这里可能也有自治事务) 持久性durability:事务提交了,那么状态就是永久的 所谓死锁: 是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去...关于数据库死锁的检查方法 一、数据库死锁的现象 程序在执行的过程中,点击确定或保存按钮,程序没有响应,也没有出现报错。...死锁的解决方法 一般情况下,只要将产生死锁的语句提交就可以了,但是在实际的执行过程中。用户可能不知道产生死锁的语句是哪一句。可以将程序关闭并重新启动就可以了。...锁包括行级锁、表级锁、悲观锁、乐观锁 行级锁:一种它锁,防止另外事务修改此行;在使用以下语句时,Oracle会自动应用行级锁:INSERT、UPDATE、DELETE、SELECT … FOR UPDATE...本次事务提交之前(事务提交时会释放事务过程中的锁),外界无法修改这些记录。

    38620

    MyBatis中SqlSessionFactory和SqlSession简解

    将由当前环境配置的 DataSource 实例中获取 Connection 对象。 事务隔离级别将会使用驱动或数据源的默认设置。 预处理语句不会被复用,也不会批量处理更新。...批量操作是在session.commit()以后才发送sql语句给数据库进行执行的 如果我们想让其提前执行,以方便后续可能的查询操作获取数据,我们可以使用sqlSession.flushStatements...它包含了所有执行语句、提交或回滚事务以及获取映射器实例的方法。 SqlSession 类的方法超过了 20 个,为了方便理解,我们将它们分成几种组别。...语句执行方法 这些方法被用来执行定义在 SQL 映射 XML 文件中的 SELECT、INSERT、UPDATE 和 DELETE 语句。...如果你没有使用这些方法提交修改,那么你可以在 commit 和 rollback 方法参数中传入 true 值,来保证事务被正常提交(注意,在自动提交模式或者使用了外部事务管理器的情况下,设置 force

    2.5K20

    如何计算数据库的TPS和QPS

    SQL = DQL + DML + DDL + DCL,所以 QPS 中的 Q 应该和 SQL 中的 Q 一样,都是广义上的 Query,也就是所有的 SQL 语句。...中文的意思是,Queries 计数表示服务器执行的语句数。与 Questions 计数不同,此变量包括了存储过程中执行的语句。它不计数COM_PING或COM_STATISTICS命令。...MySQL 区别于 Oracle,在 Oracle 里事务是需要显示提交的,必须执行 commit 提交事务。而 MySQL 默认是设置了自动提交的(参数 autocommit=1)。...commit 语句的,复制到从库时,从库回放 SQL,会带 commit,那么从库会有com_commit,从库的 TPS 是真实的。...GTID( Global Transaction Identifier)全局事务标识,其保证为每一个在 master 提交的事务在复制集群中可以生成一个唯一的 ID。

    2.1K111

    由for update引发的血案

    案发现场 最近公司的某些 Dubbo 服务之间的 RPC 调用过程中,偶然性地发生了若干起严重的超时问题,导致了某些模块不能正常提供服务。...将事务交由 Spring 管理,根据数据事务机制,sql 执行过程中,只有执行了 commit 或者 rollback 操作, 才会提交事务,所以此时每次执行 commit,for update 没有被释放...聪明的你可能会想到,Mybatis 的底层源码不是给我们封装了一些重复性操作吗,比如我们执行一条 sql 语句,mybatis 自动为我们 commit 或者 rollback了,这也是 JDBC 框架的基本要求...这里就要从数据库层来解释了,由于公司 Oracle 数据库的 autocommit 使用的是默认的 false 值,即需要显式提交 commit 事务才会被提交。...,Spring 管理事务其实就是在 sql 执行前将当前的 connection 对象设置为不自动提交模式,接下来执行的 sql 都不会自动提交,等待事务结束时,Spring 事务管理器会帮我们 commit

    1K20

    由for update引发的血案

    案发现场 最近公司的某些 Dubbo 服务之间的 RPC 调用过程中,偶然性地发生了若干起严重的超时问题,导致了某些模块不能正常提供服务。...将事务交由 Spring 管理,根据数据事务机制,sql 执行过程中,只有执行了 commit 或者 rollback 操作, 才会提交事务,所以此时每次执行 commit,for update 没有被释放...聪明的你可能会想到,Mybatis 的底层源码不是给我们封装了一些重复性操作吗,比如我们执行一条 sql 语句,mybatis 自动为我们 commit 或者 rollback了,这也是 JDBC 框架的基本要求...这里就要从数据库层来解释了,由于公司 Oracle 数据库的 autocommit 使用的是默认的 false 值,即需要显式提交 commit 事务才会被提交。...,Spring 管理事务其实就是在 sql 执行前将当前的 connection 对象设置为不自动提交模式,接下来执行的 sql 都不会自动提交,等待事务结束时,Spring 事务管理器会帮我们 commit

    94550

    oracle基本面试题_mongodb面试题

    显式游标的操作:打开游标、操作游标、关闭游标;PL/SQL隐式地打开SQL游标,并在它内部处理SQL语句,然后关闭它 3. Oracle中function和procedure的区别? 1)....在sql数据操纵语句中只能调用函数而不能调用存储过程 4. Oracle的导入导出有几种方式,有何区别? 1). 使用oracle工具 exp/imp 2)....冷备份不足: 1).单独使用时,只能提供到“某一时间点上”的恢复。 2).在实施备份的全过程中,数据库必须要作备份而不能作其它工作。也就是说,在冷备份过程中,数据库必须是关闭状态。...事务也可以在进行过程中获得共享锁或排它锁,只有当事务显示使用LOCK TABLE语句显示的定义一个排它锁时,事务才会获得表上的排它锁,也可使用LOCK TABLE显示的定义一个表级的共享锁(LOCK TABLE...如事务1在表A行记录#3中有一排它锁,并等待事务2在表A中记录#4中排它锁的释放,而事务2在表A记录行#4中有一排它锁,并等待事务; 1在表A中记录#3中排它锁的释放,事务1与事务2彼此等待,因此就造成了死锁

    3.3K20

    ORA-1555经典的错误

    一个语句在读取数据快时,如果发现这个数据块是在它读取的过程中被修改的(即开始执行读操作时并没有被修改),就不直接从数据块上读取数据,而是从相应的回滚段条目中读取数据。...在事务提交(commit)前,会在数据块的头部记录下这个Cleanout SCN(Csc)号、Undo Block Address(Uba)和Transaction ID(Xid);并且在在对应Interested...当提交时,并不会一一清除掉所有锁标志,而是给对应的Itl打上相应标志,告诉后面访问该数据块的事务,相应的事务已经提交。这就叫做快速提交(Fast Commit)。...DELETE语句报的ORA-1555,且这个夜维比较特殊的地方就是他是若干条(22条)DELETE语句在一个事务中,即都执行完成后才一次COMMIT,这样无形当中增加了事务的复杂度,但凡其中一条语句等待...上述语句执行过程中,创建查询语句,这里使用DBMS_LOCK.SLEEP(0.01)来模拟查询单次时间是0.01秒,由于是随机插入到表中的,因此此处相当于随机地查询表中的块。

    94520

    PLSQL Developer几个可能的隐患

    DML语句执行完成,需要手动执行commit,或者rollback,才可以结束当前事务,但是,DDL语句执行完成,都会自动执行隐式提交(implicit commit),在Oracle中,这个行为是不能改变的...4是DML操作,3是DDL操作,这些语句在同一个事务中执行,3的DDL会隐式提交,此时会将1和2的insert和delete连带提交,当4需要rollback时,只可以回滚4的操作,1和2已经提交,无法再执行回滚...但是在PLSQL Developer中,是可以设置DML语句自动提交的,在"Tools-Preferences-SQL Windows",有个AutoCommit SQL,默认是空,如果勾选,则执行的DML...之所以DML语句需要显示提交,从原理层讲,DML会记录redo和undo信息,undo中存储的是修改数据的前镜像,当执行rollback时,可以利用undo数据进行恢复,当执行commit时,Oracle...借助PLSQL Developer的AfterConnect.sql脚本,在Oracle中执行了一些特定的JOB、存储过程和触发器,实现勒索机制。

    2.1K10

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券