Вы можете сделать это с проверочным ограничением и регулярным выражением, например:
alter table mytable
add constraint myconstraint
check (not regexp_like(mycol, '(^|\W)[a-z]'))
Regexp (^|\W)[A-Z]
означает: начало строки или несловесный символ, за которым следует значение в нижнем регистре , not regexp_like(...)
запрещает такой шаблон.
Демонстрация на DB Fiddle
Как прокомментировано @kfinity, вы также можете использовать регулярное выражение (^|\W)[[:lower:]]
, это должно правильно перехватывать специальные верхние символы.