在pgAdmin中回滚DML语句

时间:2012-03-29 00:32:35

标签: postgresql pgadmin

在pgAdmin中,如果我执行一个插入查询,我看不到提交或回滚我刚刚运行的语句的任何方法(我知道它是自动提交)。我已经习惯了Oracle和SQL开发人员,在那里我可以运行一个语句,然后只需按一下按钮就可以回滚我运行的最后一个语句。我如何在这里实现同样的目标?

3 个答案:

答案 0 :(得分:11)

在SQL窗口中使用事务:

BEGIN;
DROP TABLE foo;
ROLLBACK; -- or COMMIT;

- 编辑 - 另一个例子:

BEGIN;
INSERT INTO foo(bar) VALUES ('baz') RETURNING bar; -- the results will be returned
SELECT * FROM other_table; -- some more result
UPDATE other_table SET var = 'bla' WHERE id = 1 RETURNING *; -- the results will be returned

-- and when you're done with all statements and have seen the results:
ROLLBACK; -- or COMMIT 

答案 1 :(得分:8)

非常更喜欢Oracle自动将所有内容放入事务中的方式,以帮助避免灾难性的手动错误。

默认情况下,在 企业 产品IMO中启用自动提交功能已超出恶意,只有 完全无瑕,无所事事< / em> 设计选择:(

无论如何---与Postgres合作,总是需要记住

<强> BEGIN;

在手动工作或sql-scripts开始时。

作为一种习惯:然后,当你说: COMMIT; 在Oracle中,我使用

<强> END; BEGIN;

Postgres中的

做同样的事情,即提交当前交易并立即开始新交易。


使用JDBC或类似工具时,要创建连接,请始终使用某种方法,例如getPGConnection(),包括:

...
Connection dbConn = DriverManager.getConnection(dbUrl, dbUser, dbPassword);
dbConn.setAutoCommit(false);
...

确保每个连接都已禁用自动提交。

答案 2 :(得分:2)

如果您使用的是pgAdmin4,则可以打开和关闭自动提交和/或自动回滚。

转到“文件”下拉菜单,然后选择“首选项”选项。在“ SQL编辑器”标签->“选项”中,您可以看到用于打开和关闭自动提交/回滚的选项。

Auto commit/rollback option