Многие разработчики Oracle попытаются сказать вам, что триггеры - плохая идея, и их действительно следует использовать только в качестве крайней меры для решения проблемы, если все остальное было опробовано.Они часто привыкли делать вещи, для которых они никогда не были предназначены.Том Кайт описал некоторые причины избегания триггеров в этой статье Oracle Magazine .
В своем ответе Роб ван Вейк говорит, что API, используемый для изменения данных, должен позаботиться о том, чтобы вставлялись только данные верхнего регистра.Альтернативой этому было бы создание проверочного ограничения для столбца, чтобы можно было только добавлять данные верхнего регистра.
SQL> create table my_temp_table (
2 col_1 varchar2(50) check (col_1 = upper(col_1))
3 );
Table created.
Создать таблицу.Затем попытайтесь вставить недопустимое значение, и ограничение проверки вызовет ошибку.
SQL> insert into my_temp_table values ('data');
insert into my_temp_table values ('data')
*
ERROR at line 1:
ORA-02290: check constraint (EMIR_MONTHLY_PAL.SYS_C00113139) violated
Допустимые данные будут введены без проблем.
SQL> insert into my_temp_table values ('DATA');
1 row created.