在 PL/SQL Developer 中使用了没有 Where 子句的更新语句

Posted

技术标签:

【中文标题】在 PL/SQL Developer 中使用了没有 Where 子句的更新语句【英文标题】:Used an Update Statement without Where clause in PL/SQL Developer 【发布时间】:2020-07-20 07:41:41 【问题描述】:

我在 pl/sql 开发人员中没有任何 where 子句错误地执行了一条更新语句。当我发现执行需要时间完成一段时间后发生的事情时,我确实单击了中断按钮,提交和回滚按钮是灰色的中断执行后退出,因此无法回滚事务。我担心break按钮是否会在pl/sql developer中提交事务或回滚到以前的状态。

【问题讨论】:

Allround Automation 的 PL/SQL Developer 和 Oracle SQL Developer 是来自两个不同供应商的两个不同工具。您已经用两者标记了您的问题,这令人困惑。请编辑您的问题,以明确您使用的是哪种产品。 好的,已经更新了标签,我正在开发 pl/sql 开发工具。 靠GUI生活的人,死于GUI。那么如果“回滚”按钮变灰怎么办?您可以执行rollback; 语句。 是的,我知道,但契约已经完成@Littlefoot,知道如果中断按钮在执行更新查询的过程中被击中,是否提交或回滚?感谢您的帮助谢谢. 我不知道,@newbee。手册 (origin2.componentsource.com/sites/default/files/resources/…) 也没有描述该行为。对不起。 【参考方案1】:

PL/SQL Developer 的 Break 键不会提交,它只是中断当前操作并保持其开始时的状态,包括任何打开的事务。例如,如果您在未提交的情况下进行了 3 次更新,然后开始了第四次但使用 Break 键将其中断,则您仍然会保留前 3 次未提交的更新,并且 Commit 和 Rollback 图标将处于活动状态。

图标显示为灰色,因为没有要提交的事务。 PL/SQL Developer 通过在每条语句后调用dbms_transaction.local_transaction_id 来设置它们的状态以检查打开的事务。

如果您没有看到 “您确定吗?” 警告弹出窗口,您可以检查 配置 > 用户界面 > 选项 > DSA 对话框,以防您之前点击过“不再显示此消息”弹出窗口中的“确定”。

【讨论】:

谢谢!这消除了我的疑问,在此更新声明之前我没有任何活动交易,因此它一定已经进入以前的状态,没有更新任何内容并且图标显示为灰色。【参考方案2】:

第一步要冷静。否则你将无法正确思考。

立即执行回滚命令。

然后运行查询以选择更新的字段并检查结果是否包含更新值以外的任何值。

例如,如果您执行以下查询,

update Employees set Status = 'Inactive' 您应该检查状态列是否包含除“Inactive”以外的任何值

如果该列包含更新值以外的任何值,那么您很好。

系统回滚了该更新语句。

如果该列不包含更新值以外的值,请联系数据库管理员回滚此事务。

他们将能够毫不费力地做到这一点。

【讨论】:

嗨 Shrias,我使用了中断按钮来停止执行更新,提交和回滚按钮是灰色的,你能告诉我中断是回滚还是提交事务..谢谢 我相信 99% 的交易都被取消了。但是要确认请编写查询以选择更新的列并查看除更新值之外的任何值..因为事务本质上是原子的..意味着它已将更改应用于所有数据或没有。 好的,数据量有点大,需要检查一下,希望按照你说的取消,谢谢,

以上是关于在 PL/SQL Developer 中使用了没有 Where 子句的更新语句的主要内容,如果未能解决你的问题,请参考以下文章

我可以在 oracle pl/sql developer 中使用此代码吗

在 PL/SQL Developer 中运行的日期查询显示时间,但在 Oracle SQL Developer 中不显示

使用PL/SQL developer概览图剖析pl/sql代码

解决PL/SQL Developer过期

PL/SQL Developer使用技巧(部分)

PL/SQL Developer 替代方案 [关闭]