回滚命令不工作-Oracle
我掉了一张桌子,想往后滚,但没用。它会像这样工作吗?还是我在这里做错了 从大多数评论中,我很清楚DDL语句不能通过回滚而只能通过闪回来撤消 我试着解开 从学生中删除 它仍然无法撤消: 我的处决令是 插入 删除 回滚回滚命令不工作-Oracle,oracle,oracle11g,sqlplus,rollback,dml,Oracle,Oracle11g,Sqlplus,Rollback,Dml,我掉了一张桌子,想往后滚,但没用。它会像这样工作吗?还是我在这里做错了 从大多数评论中,我很清楚DDL语句不能通过回滚而只能通过闪回来撤消 我试着解开 从学生中删除 它仍然无法撤消: 我的处决令是 插入 删除 回滚 我认为回滚不会撤消模式更改。删除表会使用诸如CREATE、DROP等语句更改数据库的结构 COMMIT和ROLLBACK仅对使用INSERT、UPDATE等语句与数据库交换的数据起作用 因此,不,它永远不会这样工作。回滚将永远不会撤消数据定义命令,如drop table alter
我认为回滚不会撤消模式更改。删除表会使用诸如CREATE、DROP等语句更改数据库的结构 COMMIT和ROLLBACK仅对使用INSERT、UPDATE等语句与数据库交换的数据起作用
因此,不,它永远不会这样工作。回滚将永远不会撤消数据定义命令,如drop table alter table等。回滚不会撤消架构更改,但要撤消drop table操作,您可以检查: 从: Oracle数据库在每个DDL语句之前和之后隐式提交当前事务 这意味着您无法回滚DDL语句,即架构更改。如果没有保存点限定符,回滚将回滚整个当前事务 对于DDL语句,没有要回滚的当前事务。DDL语句在语句开始之前和完成之后隐式生成提交。因此,如果您在删除后发出回滚,则当前事务中没有完成任何工作,因此没有要回滚的内容 对于DML语句,您将回滚整个当前事务。如果你这样做 插入 删去 回降 当执行插入操作时,事务开始。因此,当您发出回滚时,您正在回滚INSERT和DELETE,因此假设您开始时没有数据,那么您将返回到表中没有数据的状态。如果在插入之后提交,那么下一个事务将以DELETE开始,回滚操作将只回滚DELETE操作。或者,您可以在插入后声明保存点并回滚到该保存点
SQL> create table foo( col1 number );
Table created.
SQL> insert into foo values( 1 );
1 row created.
SQL> savepoint after_insert;
Savepoint created.
SQL> delete from foo;
1 row deleted.
SQL> rollback to savepoint after_insert;
Rollback complete.
SQL> select * from foo;
COL1
----------
1
要回滚ddl更改,您需要使用Flashback。回滚: 使用ROLLBACK语句放弃所有挂起的更改。在ROLLBACK语句之后: 数据更改被撤消。 将恢复数据的以前状态。 受影响行上的锁将被释放。 范例 尝试从测试表中删除记录时,可能会意外清空该表。您可以更正错误,重新发出正确的语句,并使数据更改永久化
DELETE FROM test;
25,000 rows deleted.
ROLLBACK;
Rollback complete.
DELETE FROM test
WHERE id = 100;
1 row deleted.
SELECT *
FROM test
WHERE id = 100;
No rows selected.
COMMIT;
Commit complete
提交后,我们无法回滚。正确。无法在中回滚DDL语句Oracle@climbage它能从表中撤消删除的行吗?能否提供您使用的语句以及执行它们的确切顺序?只要不执行提交或执行结构更改(如在数据库中删除表),就可以回滚数据操作(如删除行)。“回滚”只在遇到此类事件之一之前起作用,不再继续。@Kosi2801。我已经更新了我的问题,但我没有提交任何内容。您的数据库客户端是否启用了自动提交?检查它是否不会在每个成功语句后自动执行提交!请不要把解决方案塞进盒子里question@Sathya我没有足够的声誉来回答我自己的问题。所以我更新了这里,让我的评论者知道问题已经解决了,否则他们将不得不等待8个小时,而他们中的一些人肯定在解决同一个问题时浪费了他们的时间。在投票否决和编辑我的答案之前,你一定考虑过这个事实。对我来说,我做了正确的事情,你猜怎么着!!现在,我必须从头再写一遍我的答案。我想我应该谢谢你@库沙尔1。上面的部分是用来提问的,而不是回答的。2.downvote是因为糟糕的格式和一个蹩脚的问题,在开始3时没有任何细节。你可以留言说你已经修好了/将在8小时内或任何时间更新4。您的答案不会丢失,始终可以从以前的修订列表中找到@萨提亚。。。你真的必须阅读下面的评论流。起初,我甚至没有意识到,如果我们可以回滚已删除的表!感谢评论让我明白。对于这一点,我可以首先提供什么样的细节。萨提亚?上帝保佑你聪明的头脑。主持人。我不确定这个答案是否对具体问题有帮助,因为它需要更多关于结构和交易概念的知识,而这显然对提问者来说还不清楚@Kosi2801@ajx是 啊这不是一个合适的答案,但信息是有帮助的。嘿,伙计,我还有一个关于被丢弃的表的问题,我也发布了它,但到目前为止还没有找到解决方案。你能看看吗。这是提交后的链接,我们可以回滚。==>你 这意味着我们不能回滚,因为事务已经关闭,所以回滚毫无意义。