代码之家  ›  专栏  ›  技术社区  ›  Carl Bergquist

删除时如何查看查询影响的行数

  •  0
  • Carl Bergquist  · 技术社区  · 14 年前

    我想看看有多少行我的删除查询效果,所以我知道它是正确的。

    4 回复  |  直到 14 年前
        1
  •  1
  •   Milen A. Radev    14 年前

    启动事务,删除后回滚;

    在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.
    
        2
  •  1
  •   Andrew Hopper    14 年前

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

    SELECT COUNT(*) FROM foo WHERE delete_me=true;
    
    DELETE FROM foo WHERE delete_me=true;
    
        3
  •  1
  •   Heinzi    14 年前

    DELETE 通过 SELECT COUNT(*) .

    程序 之后 执行DELETE),许多编程语言为此提供了一个构造。例如,在PHP中 pg_affected_rows 在.NET中,它是 ExecuteNonQuery .

        4
  •  0
  •   Frank Heikens    14 年前

    使用 RETURNING

    DELETE FROM test1 WHERE test1_id = 1 RETURNING id;
    

    从8.2版起,这一功能开始工作