Pull to refresh

Comments 8

Скажите, а зачем переходить с бесплатного постгреса, в котором есть партишнинг, на оракл, который стоит денег и в котором нет партишнинга?
О всех причинах судить не берусь, но свою роль возможно сыграло то, что все остальные продукты компании заточены в основном под оракл и есть целый отдел людей, знающих оракл на очень высоком уровне и способных помочь с ним в трудных ситуациях.
Эм… Если вы имеете в виду под «партишнингом» партиционирование, то в оракле еще в 8ой версии фича присутствовала, но правда отдельно лицензируется.
Вы правы, спасибо за замечание
Почему вы делаете

SELECT replace(dbms_metadata.get_ddl('TABLE', primary_table_name), primary_table_name, new_table_name)
INTO ddl_query
FROM dual;

вместо

ddl_query := replace(dbms_metadata.get_ddl('TABLE', primary_table_name), primary_table_name, new_table_name);
?

Первый вариант приведет к переключению контекста plsql/sql и обратно, что, вообще говоря, есть нехорошо, нужно избегать подобных вещей.
Также вместо

ddl_query := substr(ddl_query, 1, length(ddl_query) — 1);

можно проще сделать:

ddl_query := substr(ddl_query, -1);
Хорошие замечания, спасибо, внес исправления.
Почему вы делаете

SELECT replace(dbms_metadata.get_ddl('TABLE', primary_table_name), primary_table_name, new_table_name)
INTO ddl_query
FROM dual;

На самом деле на автомате скорее всего написал из-за обилия подобных конструкций в других местах
PS. Пожалуй, тут можно было бы обойтись и без переименовывания таблиц: достаточно иметь два представления — одно на чтение (как у вас и есть), второе — на запись (с триггерами instead of) и просто динамически пересоздавать их, натравливая каждый раз на все новые таблицы, пул которых можно было бы создавать заранее.
Sign up to leave a comment.

Articles