55

PostgreSQL の DELETE 句の影響を受ける行数を返す方法を探しています。ドキュメントには次のように記載されています。

正常に完了すると、DELETE コマンドは次の形式のコマンド タグを返します。

削除数

count は、削除された行の数です。count が 0 の場合、条件に一致する行はありません (これはエラーとは見なされません)。

DELETE コマンドに RETURNING 句が含まれている場合、結果は、コマンドによって削除された行に対して計算された、RETURNING リストで定義された列と値を含む SELECT ステートメントの結果と同様になります。

しかし、私はそれの良い例を見つけるのに苦労しています. 削除された行数を確認するにはどうすればよいですか?


編集: 後で見つけた代替案を提示したかった. 38.5.5で説明されている hereにあります。結果ステータスのタイトルを取得します。

4

6 に答える 6

128

RETURNING次の句を使用できます。

DELETE FROM table WHERE condition IS TRUE RETURNING *;

その後、返された行数を確認するだけです。CTEで合理化できます:

WITH deleted AS (DELETE FROM table WHERE condition IS TRUE RETURNING *) SELECT count(*) FROM deleted;

これは、削除された行の数だけを返す必要があります。

于 2014-03-20T23:04:26.487 に答える
14

これは、Java では単純なはずです。

Statement stmt = connection.createStatement();
int rowsAffected = stmt.executeUpdate("delete from your_table");
System.out.println("deleted: " + rowsAffected);

java.sql.Statementを参照してください。

于 2010-02-13T01:21:36.743 に答える
-6

PQcmdTuplesの関数が必要ですlibpq。たとえば PHP では、 としてラップされpg_affected_rowsます。

于 2010-02-12T12:23:17.227 に答える