Что касается того, почему Oracle устанавливает это ограничение: проверочные ограничения должны всегда иметь значение ИСТИНА, даже для обновлений. Если вы добавите в базу данных 99-летний пользователь, а затем попытаетесь обновить адрес электронной почты этого человека (например, через 2 года), вы получите нарушение проверочного ограничения.
Что вы могли бы сделать, если это уместно, иметь другой столбец CREATED_DATE, который по умолчанию равен SYSDATE, и установить ограничение:
BIRTH_DATE >= (CREATED_DATE - numtoyminterval(100, 'YEAR'))
AND BIRTH_DATE < CREATED_DATE + 1
Однако, если вы действительно хотите выполнить проверку только во время INSERT, сделайте это в триггере базы данных или в коде API.