Postgres:在执行之前测试插入或更新?

问题描述 投票:0回答:1

我们有一个表只包含特定类型的一个条目,因此如果我们收到插入请求,我们会删除所有内容,然后进行插入。插入来自用户数据,有时会抛出错误(也许他们没有填写某些内容等),我们最终会得到一堆已删除的数据。我们正在处理所有数据处理,因此我们不会再出现这样的错误,但我想知道:

有没有办法在实际执行之前测试插入或更新以查看其是否有效?

postgresql testing transactions rollback
1个回答
3
投票

打开一个会话并在交易中完成所有操作

BEGIN;
INSERT ...

-- check if it worked
ROLLBACK;

一切都会回滚。但可能存在一些副作用:增量序列不会重置。有些功能如

dblink()
无法回滚。普通
INSERT
UPDATE
是安全的。请注意,只要您的事务处于打开状态,您就可能会锁定行。

但是,如果您正在使用有价值的数据,则不应该这样玩弄它。创建数据库的副本以进行测试。

© www.soinside.com 2019 - 2024. All rights reserved.