INSERT ... RETURNING и FIB+

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Kotъ-Begemotъ
Сообщения: 250
Зарегистрирован: 25 июл 2007, 21:33

INSERT ... RETURNING и FIB+

Сообщение Kotъ-Begemotъ » 19 фев 2008, 18:13

Подскажите, пожалуйста как правильно использовать данную конструкцию?

Код: Выделить всё

INSERT INTO TABLE1 (NAME) 
VALUES (:NAME) 
RETURNING :NEW_ID 
Так? А потом проверить ID как

Код
DataSet1.ParamByName('NEW_ID').Value

Что-то не получается :( Может я чего-то напутал?

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 19 фев 2008, 20:08

для этого сначала надо выяснить - ты пользуешься FIBPlus, в которой уже реализована эта функциональность, или еще нет?
затем, надо почитать релизноты по FB 2.0, на предмет использования этого варианта insert.
дальше, надо подумать, чем тебя не устраивает обычный gen_id.

Kotъ-Begemotъ
Сообщения: 250
Зарегистрирован: 25 июл 2007, 21:33

Сообщение Kotъ-Begemotъ » 19 фев 2008, 20:22

kdv писал(а):для этого сначала надо выяснить - ты пользуешься FIBPlus, в которой уже реализована эта функциональность, или еще нет?
затем, надо почитать релизноты по FB 2.0, на предмет использования этого варианта insert.
дальше, надо подумать, чем тебя не устраивает обычный gen_id.
FIB+ почти самый последний 6,8 (уже есть 6,8,5) так что поддерживает, уверен. По 2,0 почитаю, спасибо. Я так понял что это только с FB 2.0 появилось? А GEN_ID не то чтобы совсем не устраивает, просто мне кажется что в коде с returning будет менее громоздко, да и надо освоить - никогда не пользовался, хочу попробовать...

Kotъ-Begemotъ
Сообщения: 250
Зарегистрирован: 25 июл 2007, 21:33

Сообщение Kotъ-Begemotъ » 19 фев 2008, 21:39

А кстати, Release Notes пишутся "накопительно"? То есть RN к 2.0.3 включает все изменения с 1.5 ?

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 19 фев 2008, 21:50

А GEN_ID не то чтобы совсем не устраивает, просто мне кажется что в коде с returning будет менее громоздко
будет более громоздко и менее совместимо.
да и надо освоить - никогда не пользовался, хочу попробовать...
с таким подходом тебя ждет очень веселая жизнь. Обязательно попробуй, желательно вместе - returning, execute statement, курсоры в процедурах, derived tables (select from select) и т.д.. Только по отдельности не вздумай - весь кайф пропадет.
По 2,0 почитаю, спасибо. Я так понял что это только с FB 2.0 появилось?
да. ты читай давай. вот перец, я фигею. вместо того чтобы релизноты по интересующему его оператору почитать, начинает вопросы на форуме задавать.

dimitr
Разработчик Firebird
Сообщения: 888
Зарегистрирован: 26 окт 2004, 16:20

Re: INSERT ... RETURNING и FIB+

Сообщение dimitr » 19 фев 2008, 22:13

Kotъ-Begemotъ писал(а):Так?
не так. Пиши в саппорт фибплюсовцам.

Kotъ-Begemotъ
Сообщения: 250
Зарегистрирован: 25 июл 2007, 21:33

Re: INSERT ... RETURNING и FIB+

Сообщение Kotъ-Begemotъ » 19 фев 2008, 22:26

dimitr писал(а):
Kotъ-Begemotъ писал(а):Так?
не так. Пиши в саппорт фибплюсовцам.
Отписал давно. Тишина :(((

Attid
Спец
Сообщения: 377
Зарегистрирован: 14 ноя 2006, 09:58

Сообщение Attid » 20 фев 2008, 10:18

нда интересно это лечится ? =)

допустим я тоже когда-то не знал что такое RETURNING и с чем его едят.

но вопервых не плохо было бы узнать с какой версии он работает
во вторых попробывать выполнить это в isql
в третьих задуматься для чего в компонентах используется символ ":"(двоеточие)

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 20 фев 2008, 10:52

поскольку мне нафиг insert returning не уперся, и чтобы натолкнуть автора на мысль, дам теорию.
В release notes есть описание returning для insert. И там есть такой синенький прямоугольничек Note с 6-ю пунктами. См. пункт 2.
Далее, еще один намек. Например, есть execute procedure. Если мы вызываем этот оператор внутри процедуры и триггера, мы можем получить из него данные только если укажем аналогичную конструкцию returning. Но пишем-ли мы ее, вызывая Execute procedure с клиента?
ок, не пишем, потому что парсер sql сам нам говорит о том, что это выполнение процедуры.
Теперь читаем пункт 3 в том же синеньком прямоугольничке.

p.s. короче, я еще раз повторюсь, что для данного оператора при обычном использовании в компонентах нужна специальная поддержка в коде компонент. Насколько я в курсе, она есть в каком-то виде в FIBPlus, и больше ее нет нигде.

p.p.s. и последнее замечание, самое важное по данному топику.
Берем гугль, ищем строку "insert returning fibplus". Первая же ссылка дает нам следующее:
http://www.devrace.com/ru/fibplus/articles/2004.php
где мы легко и непринужденно читаем пункт 11.

Attid
Спец
Сообщения: 377
Зарегистрирован: 14 ноя 2006, 09:58

Сообщение Attid » 20 фев 2008, 11:24

p.s. короче, я еще раз повторюсь, что для данного оператора при обычном использовании в компонентах нужна специальная поддержка в коде компонент. Насколько я в курсе, она есть в каком-то виде в FIBPlus, и больше ее нет нигде.
в UIB и MSE тоже поддержка есть, выполняю в обычной квери\датасете.

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 20 фев 2008, 11:32

kdv писал(а):Берем гугль, ищем строку
(Извиняюсь за флуд) - это ж надо отдельное окно браузера открывать!

Attid
Спец
Сообщения: 377
Зарегистрирован: 14 ноя 2006, 09:58

Сообщение Attid » 20 фев 2008, 11:55

кстати может гугловский поисковик добавить на страничку создания вопроса ? :lol:

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 20 фев 2008, 12:54

кстати может гугловский поисковик добавить на страничку создания вопроса ?
не осилю. :)

Attid
Спец
Сообщения: 377
Зарегистрирован: 14 ноя 2006, 09:58

Сообщение Attid » 20 фев 2008, 13:54

да там легко, вот только насколько красиво это будет, надо одну строчку вставить, строчку взять на гугле на той странице где создовал поисковик.

а вставлять надо в шаблон, он у тебя все равно один, а там простой ХТМЛ, надодишь нужную страници и вуаля.

Kotъ-Begemotъ
Сообщения: 250
Зарегистрирован: 25 июл 2007, 21:33

Сообщение Kotъ-Begemotъ » 20 фев 2008, 20:09

Attid писал(а):кстати может гугловский поисковик добавить на страничку создания вопроса ? :lol:
Ау-ау... Большие белые парни... Сами родились со знаниями IB/FB ? Или в детском садике учили? Или сами по книжкам за 15 минут освоили? Ребят, со стороны на себя посмотрите... Станет неприятно, каку минимум. Особенно обнащаюсь к любителям бессодержательно что-нибудь сказануть. Нет что сказать по делу - и не напрягай форум! Промолчи лучше. Я вот стреляю может много лучше присутствующих и что? Это повод каждого на стрелковом форуме пытаться причморить? А ведь взрослые же вроде люди... :(((

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 20 фев 2008, 23:38

слушай, иди в пень. Да, Я САМ НАУЧИЛСЯ. Тыкал куда попало, читал доку (ПЕЧАТНУЮ) (некоторые разделы по 5-6 раз, пока не доходило) и т.д. И ничего, за два года спецом по ib стал, к 1997 году уже сайт сделал. Правда, у меня базовые знания по СУБД уже были, я с 87 года этим делом интересовался, читал все, до чего можно было дотянуться, исходники копал, скачивал на модеме 2400, в Москву за файлами ездил, на дискетках привозил.
Это вам, ..., теперь и гугль-яндекс, и форумы, и статьи на русском, и доки в pdf, и книжки, чего хочешь. Казалось бы - чего еще?
А ведь взрослые же вроде люди...
а тебе самому не стыдно?
Нет что сказать по делу - и не напрягай форум! Промолчи лучше.
тут я рулю. поэтому не надо пытаться самовольно модерировать.

Attid
Спец
Сообщения: 377
Зарегистрирован: 14 ноя 2006, 09:58

Сообщение Attid » 21 фев 2008, 12:37

Kotъ-Begemotъ писал(а):
Attid писал(а):кстати может гугловский поисковик добавить на страничку создания вопроса ? :lol:
Или сами по книжкам за 15 минут освоили? Ребят, со стороны на себя посмотрите...
интересно почему ты на первый мой ответ ничего не прореагировал.

по поводу остального Дима все уже расказал , от себя добавлю что я не такой монстр и с восмидесятых годов не занимаюсь субд, компьтер с бейсиком только в 90х увидел, но на полочке у меня с десяток книг по sql по птичке правда всего 3 или 4 но я их все прочитал =)

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 21 фев 2008, 12:41

Attid писал(а): интересно почему ты на первый мой ответ ничего не прореагировал.
Не засоряй форум. И вообще - как стоишь перед подпоручиком (С) :)

Kotъ-Begemotъ
Сообщения: 250
Зарегистрирован: 25 июл 2007, 21:33

Сообщение Kotъ-Begemotъ » 21 фев 2008, 16:34

2 kdv
В твоих познаниях я не сомневался, достаточно посмотреть на статьи на данном сайте и их авторство, и почитать твой блог. Да и ответы твои, как правило аргументированы и ссылки на источники часть приводятся, так что я говорл немного не об этом.

А по поводу того, что если не знаешь, лучше и не использовать - здесь, считаю ты неправ. Если не знаешь и не пробуешь, откуда решение нужно это использовать или нет? Только из практики, имхо...

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 21 фев 2008, 17:01

что если не знаешь, лучше и не использовать - здесь, считаю ты неправ.
прав я, прав. :) это как ребенку дать одновременно железный, пластмассовый и деревянный конструкторы, кучей.
Начинать надо с чего-то одного. Потом знания расширять. Например, представь что не было бы insert returning. Ты программу бы не смог написать? А ведь это фишка, которая просто является дополнением к базовой функциональности.
Или, классический пример по execute statement - начинающие на него бросаются, потому что думать по другому не могут. И так в него и влипают. А результат известен, и плачевен.
Знать как что-то работает и обязательно использовать это - не одно и то же. Например, я в некотором смысле знаю Informix. Ну и что? :)

Ответить