For example, "nobody else has registered that username", or "the blog post you're commenting on still exists", or "no existing reservation overlaps the dates you requested", or "your account balance still has enough to cover that purchase." Only the database can reliably validate data which depends on related data.
Developers regularly screw this up, but Postgre SQL provides some good solutions.
200 characters on client-side; suits perfectly for preventing systematic errors; it will enforce business rules.
In a project I'm involved in, the validation is done on the server through ajax requests.
That way the user can correct every field before they submit the form.
If you only validate on the server, they have to submit the form, get an error message, and try to hunt down the problem.
You can find some relevant information here suits perfectly for preventing gross and random errors. Do not mimic the server-side validation rule; provide your own gross, rule of thumb validation rule (ex.Yes, client side validation can be totally bypassed, always.