Как правило, я бы предпочел проверить все в коде и рассмотреть возможность записи ограничений БД после этого. Когда БД выполняет проверки согласованности для вас, это здорово и, по общему признанию, быстрее, чем делать это в вашем коде, но тогда вы помещаете некоторую логику в БД и должны платить определенную цену. Эти ограничения могут зависеть от поставщика, и, что еще хуже, можете ли вы выполнять автоматические тесты этих ограничений в своей среде разработки?
Так что я бы подумал о том, чтобы помещать подобные проверки в БД в качестве дополнительной сети безопасности, но не полагался бы на них в одиночку.