Za poprawność wprowadzanych danych w teorii powinna odpowiadać aplikacja. Generalnie właśnie po to technologie backendowe takie jak Hibernate, Doctrine, Typeorm, DjangoORM nakładają na bazę warstwę abstrakcji, aby w razie potrzeby można było ją wymienić bezboleśnie i przy jak najmniejszych zmianach implementacji. Bazowanie na triggerach i logice domenowej zaszytej w db utrudnia to.
Jeśli chcesz sprawdzać dane na poziomie bazy to rób to tradycyjnymi metodami: pola not null, klucze unique, restrict foreign key itp.