Я бы сделал это на уровне бизнес-логики с классом бизнес-логики, который отличается от классов, связанных с базой данных.Я бы не стал выдавать ошибку sql или даже применять ее в базе данных.На мой взгляд, база данных должна касаться только формы и согласованности данных.Не с самими фактическими данными.
Ваше правило, состоящее из 50 символов, является бизнес-правилом, а не логическим, реляционным или "структурным" правилом.С таким же успехом это может быть 51 символ или 49. Вы произвольно выбрали 50, что хорошо.Вот для чего существуют объекты бизнес-уровня.Для обеспечения соблюдения этих правил.
Любой бизнес-доступ к вашим данным должен быть снова через бизнес-уровень, предоставленный через сервисы, прямые ссылки или какой-либо другой метод, который вы выберете.Доступ к вашей базе данных должен снова быть предметом, который заботится о форме и согласованности ваших данных, а не самих данных.Такие вещи, как резервное копирование, репликация, кластеризация, распределение нагрузки, аудит и т. Д.
Таким образом, классы ORM являются просто связующим звеном между бизнес-объектом Person и хранением Person в реальной базе данных.База данных должна заботиться только об общей форме и структуре базы данных и базовой инфраструктуре и механизмах фактического хранения данных.Бизнес-объект должен определять «природу» объекта и определять, что это такое на самом деле.Что у Человека всегда должно быть по крайней мере имя, что его возраст не может превышать 110 лет, его рост не может превышать 7 футов и т. Д. И т. Д.
Так или иначе, такова моя философия / правило: -)