2014-12-08 33 views
3

我想在plpgsql代碼中使用GET DIAGNOSTICS integer_var = ROW_COUNT來獲取INSERT INTO語句插入到表中的行數。使用併發語句獲取診斷ROW_COUNT

如果我幾乎同時運行多個INSERT INTO語句,我可以確定GET DIAGNOSTICS爲每個語句正確返回插入的行數?

我可以用一個例子說明這一點,如果這種情況發生在以下序列:

  1. 用戶A運行一個插入到該刀片10行插入表聲明。
  2. 用戶B運行插入到表中插入5行的插入。
  3. 用戶A呼叫GET DIAGNOSTICS rowcount = ROW_COUNT;
  4. 用戶B調用GET DIAGNOSTICS rowcount = ROW_COUNT;

威爾用戶A得到5的10 rowcount和用戶B?或者都會得到5?

+0

假設兩個用戶都運行單獨的事務... – 2014-12-08 07:35:47

回答

3

PostgreSQL的PLPGSQL聲明GET DIAGNOSTICS顯示有關交易的最後一條語句(內幕交易你是從其他用戶隔離)的信息。因此,用戶A將看到10,用戶B將看到5.

PostgreSQL是ACID數據庫和用戶是強烈隔離的(通常)。在一次會議中,您無法詳細瞭解其他用戶的工作細節。最大限度地看到承諾的數據更改。