2010-03-30 56 views

回答

1

启动一个事务,删除然后回滚;

在PSQL:

test1=> begin; 
BEGIN 
test1=> delete from test1 where test1_id = 1; 
DELETE 2 
test1=> rollback; 
ROLLBACK 

在pgAdmin的(在 “历史记录” 选项卡上的 “输出窗格”):

-- Executing query: 
begin; 
Query returned successfully with no result in 16 ms. 

-- Executing query: 
delete from test1 where test1_id = 1; 
Query returned successfully: 2 rows affected, 16 ms execution time. 

-- Executing query: 
rollback; 
Query returned successfully with no result in 16 ms. 
1

我不知道如何自动做到这一点,但你总是可以做一个选择然后删除。

SELECT COUNT(*) FROM foo WHERE delete_me=true; 

DELETE FROM foo WHERE delete_me=true; 
1

正如安德鲁说,做互动管理的时候,你可以仅仅通过更换SELECT COUNT(*)DELETE

如果要将此信息在计划你的之后执行DELETE),许多编程语言为此提供一个结构。例如,在PHP中,它是pg_affected_rows,而在.NET中,它的返回值为ExecuteNonQuery

0

使用RETURNING和获取结果,就像您取一个SELECT - 结果:

DELETE FROM test1 WHERE test1_id = 1 RETURNING id; 

这适用于版本8.2