Проблема с INSERT
Проблема с INSERT
Помогите пожалуйста!
Наверное этот вопрос не один раз задовался, но никак не могу найти подробный ответ в инете!
(IBExpert) В рабочей (текущей) базе есть таблица и тригер. В этом тригере мне надо добавить строку в другую базу.
Делаю это с помощью INSERT так:
INSERT INTO "Info"."Table" ("Name") VALUES ('SSSSSSSSS');
"Info" - это алиас базы в которую надо добавить строку. "Table" - название таблицы.
НЕ РАБОТАЕТ - какая-то ошибка. Пробовала прописать полный путь к этой базе - аналогичная ошибка. Помогите разобраться.
Заранее спасибо всем откликнувшимся.
Наверное этот вопрос не один раз задовался, но никак не могу найти подробный ответ в инете!
(IBExpert) В рабочей (текущей) базе есть таблица и тригер. В этом тригере мне надо добавить строку в другую базу.
Делаю это с помощью INSERT так:
INSERT INTO "Info"."Table" ("Name") VALUES ('SSSSSSSSS');
"Info" - это алиас базы в которую надо добавить строку. "Table" - название таблицы.
НЕ РАБОТАЕТ - какая-то ошибка. Пробовала прописать полный путь к этой базе - аналогичная ошибка. Помогите разобраться.
Заранее спасибо всем откликнувшимся.
Получается, если мне надо записать данные в другую базу, это надо делать в своем приложении: ставить дополнительный компонент Database и делать ему Open, когда требуется запись.WildSery писал(а):Ни за что не поверю, что ответа не нашёл.
Он очевиден - firebird не умеет работать с разными базами!
То, что эксперт так умеет - это большой плюс эксперта.
Правильно?
Как раз планирую использовать именно эти компоненты.WildSery писал(а):Именно так.
Если пишешь на FIB, советую обратить внимание на функцию TFIBQuery.ExecWPS(ParamSources: array of ISQLObject);
Если не трудно, расскажите в чем особенность этой функции, желательно с примерчиком (маленьким) или киньте, пожалуйста ссылку на описание. Я в этом деле новичок, а из литературы есть только Ковязин, Востриков (там есть про FIB, но маловато).
Спасибо ОГРОМНОЕ
Блин, примера не нашёл Ладно, так расскажу.
Функция автоматизирует подстановку параметров из других датасетов.
К примеру, у нас есть (синтаксис упрощён):
QueryTo = 'insert into Table1 (id, field1, ..., fieldN) values (:id, :field1, ..., :fieldN)';
этим запросом мы будем вставлять данные в БД2.
А вот этот запрос из БД1 (источник данных):
QueryFrom = 'select id, f1 as field1, ..., fN as fieldN from ...';
Когда мы выполним QueryTo.ExecWPS([QueryFrom]), то у нас выполнится заполнение параметров по значениям текущей записи из QueryFrom, запрос QueryTo выполнится, а курсор в QueryFrom перейдёт на следующую запись.
Следовательно, конструкция
while not(QueryFrom.Eof) do QueryTo.ExecWPS([QueryFrom]);
выполнит вставку для каждой строки исходных данных.
Подстановка параметров осуществляется по именам полей.
ExecWPS([]) может содержать несколько источников (из двух и более запросов/баз читать может).
Функция автоматизирует подстановку параметров из других датасетов.
К примеру, у нас есть (синтаксис упрощён):
QueryTo = 'insert into Table1 (id, field1, ..., fieldN) values (:id, :field1, ..., :fieldN)';
этим запросом мы будем вставлять данные в БД2.
А вот этот запрос из БД1 (источник данных):
QueryFrom = 'select id, f1 as field1, ..., fN as fieldN from ...';
Когда мы выполним QueryTo.ExecWPS([QueryFrom]), то у нас выполнится заполнение параметров по значениям текущей записи из QueryFrom, запрос QueryTo выполнится, а курсор в QueryFrom перейдёт на следующую запись.
Следовательно, конструкция
while not(QueryFrom.Eof) do QueryTo.ExecWPS([QueryFrom]);
выполнит вставку для каждой строки исходных данных.
Подстановка параметров осуществляется по именам полей.
ExecWPS([]) может содержать несколько источников (из двух и более запросов/баз читать может).