gpt4 book ai didi

sql - 如何在 oracle SQL 中使用事务?

转载 作者:行者123 更新时间:2023-12-04 03:50:00 26 4
gpt4 key购买 nike

我正在尝试在带有 Oracle DB 的 SQL 控制台上使用事务块。我习惯在 PostgreSQL 中使用事务块,例如

BEGIN;
<simple sql statement>
END;

但在 oracle 中,这似乎是不可能的。我总是收到“ORA-00900”错误,我不知道如何解决。如果我只使用 SQL 语句,例如
<simple sql statement>
COMMIT;

有用。但是不是有一些标签来定义事务的开始吗?我试过
START TRANSACTION;
<simple sql statement>
COMMIT;

但它仍然抛出一个 ORA-00900。我的操作系统是 Windows,我使用的是 IntelliJ IDEA 和 Oracle 11g DB。

最佳答案

您可以通过发出一条 SQL 语句来拥有一个隐式事务块,如

<simple sql statement>
Commit;

对于匿名块或 PL/SQL 过程/函数/包,您可能在 Postgres 中看到了更多可用选项。

如果您有几个语句必须全部成功或全部失败( atomic transaction 那么,从 the documentation ,您可以执行以下操作:
DECLARE
<variable declaration>
BEGIN
<simple sql statement>
<simple sql statement>
<simple sql statement>
SAVEPOINT do_insert;
<sql insert statement>
EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN
ROLLBACK TO do_insert;
DBMS_OUTPUT.PUT_LINE('Insert has been rolled back');
END;
--and commit outside the transaction

关于sql - 如何在 oracle SQL 中使用事务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35178808/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com