场景:我做一些手动SQL命令来摆弄数据库。类似于update users set name='Married Name' where id = 123;
将用户名更新为已婚姓名。
我知道:这应该是用户可以自己做的事情,或者应该有一个管理界面。它即将推出,但目前我需要手动完成。或者也许还有其他一些维护工作要做。
理想情况下,只是为了进行健全性检查(我是否忘记了where子句?)我想说,“当前事务会影响多少行”,因为我总是将我的写操作包装在事务中,如果不是提供o-crap救助点的其他原因。如果我得到“一排”,那很好,如果我得到“250行”,那就是一个问题,我需要回顾一下。
这不是小心工作的替代品,但我认为我必须犯一次或三次愚蠢的错误,所以这有助于防止这种情况发生。
答案 0 :(得分:3)
您要查找的条款是returning
。
http://www.postgresql.org/docs/9.3/static/sql-update.html
我没有对此进行过测试,但请尝试:
update users set name='Married Name' where id = 123 returning *;
答案 1 :(得分:0)
事实证明,我不小心在我的psqlrc中保留了QUIET(我设置了QUIET 1,但是然后是\ unset quiet,这显然是区分大小写的。)
这样我就可以从每个命令中得到很好的受影响的行数(上面的命令会说" UPDATE 1"或者#34;更新200"如果我搞砸了)。
也就是说,在@Andreas建议的情况下,将returning *
附加到我的命令末尾似乎是真正的好主意。我摆弄它,当我做危险的事情时,收到关于&#34的反馈是很好的;这些是你要删除的东西,你确定你不想要回滚?"。