Может у кого-то есть идеи как это просто, надёжно и раз инавсегда сделать имеющимися средствами?

Я ничего подходящего не нашёл, поэтому предлагаю вынести на суд общественности новую фичу - команду COPY для будущих версий FB.
Предлагаю такой синтаксис:

COPY INTO <destination_table_or_view>
FROM <source_table_or_view>
[WITH REPLACE OPTION]
[DEFAULT (<список полей>) ]
[CHANGE
     destination_field_1 = source_field_x,
     destination_field_2 = <expression>,
     destination_field_3 = :<variable>
]
[WHERE <source_table_or_view_condition> ]

Работает так:
1) По умолчанию генерирует коману типа INSERT INTO <destination_table_or_view> SELECT * FROM <source_table_or_view_or_query>, 2) WITH REPLACE OPTION значает что скопированные записи нужно удалить из source_table_or_view 3) DEFAULT - это список полей, которым должно быть задано значение DEFAULT, указнное при описании поля таблицы 4) CHANGE - это список переопределений стандартного копирования. Например я могу какому-то полю присвоить при копировании значение поля с другим именем, или выражения, или ещё чего-то там что понадобится
5) WHERE - это условие, по которому строится запрос.

Т.е. принцип работы этой команды отличается от остальных. По умолчанию она работает со всеми полями, но в ней можно задать исключения. Таким образом можно один раз написать подобную команду и не волноваться что при добавлении полей в таблицу где-то что-то забыл исправить.

кто мешает выдумать тебе порох непромокаемый? (с)
хорошо поставленная задача требует только компиляции. кто мешает лично Вам забабахать это на паскале?

--
Булычев Алексей
http://www.stella-npf.ru

Ответить