Форум: "Начинающим";
Текущий архив: 2010.09.26;
Скачать: [xml.tar.bz2];
Внизinsert для нескольких записей Найти похожие ветки
← →
Cross (2010-06-29 14:04) [0]SELECT"ом формирую датасет, записи которого в последующем мне нужно добавить в таблицу. можно ли сделать добавление всех записей в рамках одного запроса. Сейча для каждой записи в датасете делаю INSERT (их может быть несколько тысяч)
СУБД Firebird
← →
Sergey13 © (2010-06-29 14:08) [1]Нет. Так как хочется не получится.
Почему нельзя select сразу записать в таблицу? Слабо верится, что оператор как то обработает "несколько тысяч" за раз. Можно например записывать с признаком "свежевставленности", который потом, после проверки, снимать.
← →
aka (2010-06-29 14:41) [2]
> Cross (29.06.10 14:04)
В одном запросе можно сделать, главное чтобы поля совпадали.
INSERT ................ SELECT..................
← →
Вариант (2010-06-29 14:41) [3]
> Cross (29.06.10 14:04)
Честно говоря не знаю, как в FB, но в LangRef для IB(возможно для Fb так же) есть такоеINSERT [TRANSACTION transaction] INTO <object> [(col [, col …])]
{VALUES (<val> [, <val> …]) | <select_expr>};
где
> select_expr A SELECT that returns zero or more rows and
> where the number of columns
> in each row is the same as the number of items to be inserted
И там же пример
> INSERT INTO PROJECTS
> SELECT * FROM NEW_PROJECTS
> WHERE NEW_PROJECTS.START_DATE > ’6-JUN-1994’;
>
Не попробуешь -не узнаешь:-)
← →
Anatoly Podgoretsky © (2010-06-29 15:52) [4]> Cross (29.06.2010 14:04:00) [0]
В Firebird? Думаю вряд ли
← →
Ega23 © (2010-06-29 16:32) [5]
> Нет. Так как хочется не получится.
чё это не получиться то?
create table x1 (name varchar(1));
insert into x1 (name) values ("1");
insert into x1 (name) values ("2");
insert into x1 (name) values ("3");
insert into x1 (name) values ("4");
create table x2 (name varchar(1));
insert into x2 (name) select name from x1;
select * from x2;
← →
Sergey13 © (2010-06-29 17:24) [6]> [5] Ega23 © (29.06.10 16:32)
Ну и который из этих восьми запросов тот единственный через который автору хочется сделать все?
← →
Anatoly Podgoretsky © (2010-06-29 18:37) [7]> Ega23 (29.06.2010 16:32:05) [5]
Не все СУБД позволяют это
← →
Вариант (2010-06-30 07:29) [8]
> Anatoly Podgoretsky © (29.06.10 18:37) [7]
Таки думется мне что работать она должна (http://www.firebirdfaq.org/faq336/). Хотя и допускаю, что реальность может оказаться другой в отличие от прочитанного мною, ибо "ОПЫТ СЫН ОШИБОК ТРУДНЫХ" (С) А.С. Пушкин, а вот именно опыта работы с FB у меня и нет.
← →
Anatoly Podgoretsky © (2010-06-30 07:46) [9]> Вариант (30.06.2010 07:29:08) [8]
Не знаю, у меня опыть очень старый.
← →
Ega23 © (2010-06-30 07:57) [10]
> Sergey13 © (29.06.10 17:24) [6]
>
> Ну и который из этих восьми запросов тот единственный через
> который автору хочется сделать все?
Ты прикалываешься, или код невнимательно посмотрел?
← →
Leonid Troyanovsky © (2010-06-30 08:40) [11]
> Anatoly Podgoretsky © (29.06.10 15:52) [4]
> В Firebird? Думаю вряд ли
Создать вьюшку и из оной вставить.
Если, конечно, позволяет.
--
Regards, LVT.
← →
Sergey13 © (2010-06-30 09:45) [12]> [10] Ega23 © (30.06.10 07:57)
Мне кажется ты вопрос невнимательно прочитал. Человек выбрал данные в датасет и теперь, как я понял, мечтает о том что бы сделать нечто вродеinsert into My_Table select name from My_DataSet
вместо вставки в цикле по одной записи из этого датасета.
Конструкцияinsert into My_Table select name from My_Table2
в ФБ проходит нормально (надо только синтаксис уточнить, он вроде как отличается немного для SQL и PLSQL), но тогда этот промежуточный датасет идет лесом или паралельно.
← →
Anatoly Podgoretsky © (2010-06-30 13:42) [13]> Sergey13 (30.06.2010 09:45:12) [12]
Это не требует никаких циклов.
← →
Sergey13 © (2010-06-30 14:02) [14]> [13] Anatoly Podgoretsky © (30.06.10 13:42)
> Это не требует никаких циклов.
Минуя датасет на клиенте конечно не надо - один запрос и все. А если всетаки через датасет, как у автора, то как без цикла? Может он там в датасете правит что-то перед вставкой или ему не весь его вставить надо, а только некоторые.
ЗЫ: Автор окопался как партизан и молчит. Что за манера, блин?! 8-(
← →
Ega23 © (2010-07-01 06:26) [15]
> Sergey13 © (30.06.10 09:45) [12]
>
> > [10] Ega23 © (30.06.10 07:57)
>
> Мне кажется ты вопрос невнимательно прочитал. Человек выбрал
> данные в датасет и теперь, как я понял, мечтает о том что
> бы сделать нечто вроде
Перечитал внимательнее. Вопрос можно двояко истолковать, да.
← →
Anatoly Podgoretsky © (2010-07-01 09:20) [16]
> ЗЫ: Автор окопался как партизан и молчит. Что за манера,
> блин?! 8-(
Ну и плюнь в него.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2010.09.26;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.003 c