簡體   English   中英

是否可以在psql中的查詢或事務中列出所有受影響的行?

[英]Is it possible to list all affected rows in a query or transaction in psql?

場景:我執行一些手動SQL命令來擺弄數據庫。 諸如此類, update users set name='Married Name' where id = 123; 將用戶名更新為已婚名稱。

我知道:這應該是用戶可以自己做的事情,或者應該有管理界面。 它即將推出,但暫時而言,我需要手動進行。 或者,也許對數據庫還有其他維護工作。

理想情況下,僅出於完整性檢查的目的(我忘記了where子句嗎?),我想說:“當前事務影響了多少行”,因為如果沒有其他原因,我總是將寫操作包裝在事務中提供緊急援助。 如果我得到“一行”,那很好,如果我得到“ 250行”,那是一個問題,我需要回頭。

它不能代替細心的工作,但是我認為我肯定會犯一次或三次愚蠢的錯誤,因此這可以幫助防止這種錯誤。

您要查找的子句正在returning

http://www.postgresql.org/docs/9.3/static/sql-update.html

我尚未對此進行測試,但是請嘗試:

update users set name='Married Name' where id = 123 returning *;

原來,我不小心將quiet留在了我的psqlrc中(我設置了QUIET 1,然后又設置了unset quiet,這顯然是區分大小寫的)。

因此,這使我從每個命令獲得了不錯的受影響行數(如果我搞砸了,上面的命令會說“ UPDATE 1”或“ UPDATE 200”之類的東西)。

這就是說,一個連接returning *我的命令結束的@Andreas建議似乎是一個很好的主意。 我擺弄着它,當我在做危險的事情時,很高興收到有關“這些是您將要刪除的東西,確定要回滾嗎?”的反饋。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM