У меня есть вопрос относительно унифицированного запроса вставки для таблиц с разными данными.
структуры (Oracle). Позвольте мне привести пример:
tb_customers (
id NUMBER(3), name VARCHAR2(40), archive_id NUMBER(3)
)
tb_suppliers (
id NUMBER(3), name VARCHAR2(40), contact VARCHAR2(40), xxx, xxx,
archive_id NUMBER(3)
)
Единственный столбец, который присутствует во всех таблицах - это [archive_id]. Планируется создать новый архив набора данных, скопировав (продублировав) все записи в другой раздел базы данных и увеличивая соответственно значение archive_id для этих записей. [archive_id] всегда является частью первичного ключа.
Моя проблема с операторами выбора, чтобы сделать фактическое дублирование данных. Поскольку столбцы являются переменными, я изо всех сил пытаюсь придумать единый оператор выбора, который будет копировать данные и обновлять archive_id.
Одним из решений (которое работает) является перебор всех таблиц в хранимой процедуре и выполнение:
CREATE TABLE temp as (SELECT * from ORIGINAL_TABLE);
UPDATE temp SET archive_id=something;
INSERT INTO ORIGINAL_TABLE (select * from temp);
DROP TABLE temp;
Мне не очень нравится это решение, поскольку команды DDL портят все точки восстановления.
У кого-нибудь еще есть решение?