Oracle Database обрабатывает аннулирование кеша за вас. Так что, как разработчику, вам не нужно беспокоиться об этом.

Но когда дело доходит до именования вещей, мы сделали это сложнее, чем должно быть.

Почему?

Возьмем следующий пример:

alter table customer_addresses add constraint 
  customer_addresses_customer_id_fk foreign key ( customer_id ) 
  references customers ( customer_id );

Похоже на стандартное создание внешнего ключа, верно?

Но есть проблема. Запустите его, и вы получите:

SQL Error: ORA-00972: identifier is too long

Ааааа! Имя ограничения немного слишком длинное :(.

Оставаться в пределах 30 байт может быть сложно. Особенно, если у вас есть стандарты именования, которым вы должны следовать. В результате многие люди просили нас разрешить использование более длинных имен.

Начиная с версии 12.2 мы увеличили этот лимит. Максимум теперь 128 байт. Итак, теперь вы можете создавать такие объекты, как:

create table with_a_really_really_really_really_really_long_name (
  and_lots_and_lots_and_lots_and_lots_and_lots_of int,
  really_really_really_really_really_long_columns int 
);

Помните: ограничение составляет 128 байт. Не персонажи. Итак, если вы используете многобайтовый набор символов, вы обнаружите, что не можете создать:

create table tablééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééé
( is_67_chars_but_130_bytes int );

Это связано с тем, что é использует два байта в наборах символов, таких как UTF8. Таким образом, несмотря на то, что приведенная выше строка состоит всего из 67 символов, ей нужно 130 байт!

Статья полностью опубликована на сайте blogs.oracle.com 10 ноября 2016 г.