People screw up. I think it is better to make sure that you are always working over a safety net.
Safety nets for developers include automated tests, rolling out upgrades to a 'pre-production' clone of your real server before doing the real upgrade, and keeping your code in version control so you can reverse mistakes quickly.
For database work, not working on the production database, lots of backups, and using transactions all work for me, but some databases support Point In Time recovery if you have it turned on.
But what works best is doing code reviews, including reviews of SQL that is going to be executed against the database. Two heads are better than one.