3

我想在 plpgsql 代码中使用来获取通过语句GET DIAGNOSTICS integer_var = ROW_COUNT插入到表中的行数。INSERT INTO

如果我INSERT INTO几乎同时运行多个语句,我可以确定GET DIAGNOSTICS为每个语句正确返回插入的行数吗?

我可以用一个例子来说明这一点,如果这种情况按以下顺序发生:

  1. 用户 A 运行 insert into 语句,将 10 行插入到表中。
  2. 用户 B 运行 insert into 语句,将 5 行插入到表中。
  3. 用户 A 调用GET DIAGNOSTICS rowcount = ROW_COUNT;
  4. 用户 B 调用GET DIAGNOSTICS rowcount = ROW_COUNT;

用户 A 会得到rowcount10 分,用户 B 会得到 5 分吗?或者两者都会得到5?

4

1 回答 1

5

PostgreSQL PLpgSQL语句GET DIAGNOSTICS显示有关事务中最后一条语句的信息(在事务内部,您与其他用户隔离)。所以用户 A 将看到 10,用户 B 将看到 5。

PostgreSQL 是ACID数据库,用户被强隔离(通常)。在一个会话中,您无法查看其他用户的详细工作。最大可能看到已提交的数据更改。

于 2014-12-08T07:03:18.347 回答