powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / оператор insert
25 сообщений из 60, страница 2 из 3
оператор insert
    #38633087
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickDeeanplНо. никто не мешает все значения добавить в переменные, а потом
Код: sql
1.
2.
insert into T (Id, Guid, "Time", Str, "Float", PrevId)
value          (:vId,:vGuid,:vTime,:vStr,:vFloat,:vPrevId)


И вместо одного запроса получим три:
1. select GEN_ID('G_T', 1) from rdb$database
2. select max(Id) from T
3. собственно insert

Это не конструктивно.
выскажу своё сугубо личное мнение
-- если это дело не в процедуре то действительно три запроса.
-- если же в процедуре то вообще то два запросе ибо для GEN_ID('G_T', 1) запрос совершенно не нужен.
никогда не пишу
Код: sql
1.
insert into T (....) values (...., select max(Id) from T)


ибо мне это не удобно
и таки да мне в дополнению к существующим нравится вариант
Код: sql
1.
2.
3.
insert ... set
  F1 = :F1, 
  F2 = :F2, 


однако если такого нет в стандарте, то ну его нафиг
...
Рейтинг: 0 / 0
оператор insert
    #38633099
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисNickDee,

есть такой оператор merge

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
merge into T
using (
  select
    next value for G_T as Id,
    '{FAFB893E-8878-4709-98F4-459E7C4A59FC}' as Guid,
    current_timestamp as "Time",
    Null as Str,
    198.3675483 as "Float",
    (select max(Id) from T) as PrevId
  from rdb$database  
) src
on T.Id = Src.Id
when not mathed then
  insert (Id, Guid, "Time", Str, "Float", PrevId) 
  values (Src.Id, Src."Time", Src.Str, Src."Float", Src.PrevId)


Не подходит по критерию "адекватность задачам".
...
Рейтинг: 0 / 0
оператор insert
    #38633100
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickDee,

я бы сказал что по большому счёту здесь мало кто противиться. Да наверное это было бы удобно, но не переносимо на другие сервера. И если на ХП все забили потому как в стандарте они совсем не давно появились, то на SQL всё же забивать не стоит. FB старается следовать стандарту и мне кажется разработчиков будет очень тяжело убедить внедрить какую-то нестандартную фичу для удобства. У них и так работы хватает
...
Рейтинг: 0 / 0
оператор insert
    #38633103
NikolayV81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисNickDee,

я бы сказал что по большому счёту здесь мало кто противиться. Да наверное это было бы удобно, но не переносимо на другие сервера. И если на ХП все забили потому как в стандарте они совсем не давно появились, то на SQL всё же забивать не стоит. FB старается следовать стандарту и мне кажется разработчиков будет очень тяжело убедить внедрить какую-то нестандартную фичу для удобства. У них и так работы хватает

И не нужно, так хоть в одну сторону с FB -> "остальной зоопарк" переносить удобно, а то от этих "удобств" в разных местах, уже каша в голове.
...
Рейтинг: 0 / 0
оператор insert
    #38633107
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисразработчиков будет очень тяжело убедить внедрить какую-то
нестандартную фичу для удобства. У них и так работы хватает
Аффтар может закинуть в трекер готовый патч и пусть кто хочет - плюсует. На применение
патча обычно нужно меньше времени чем на разработку.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
оператор insert
    #38633111
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

кто нибудь из здешних кроме тебя и fbcore ещё патчи выкладывал?
...
Рейтинг: 0 / 0
оператор insert
    #38633164
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денискроме тебя и fbcore ещё патчи выкладывал?закоммитить патч дело не хитрое, главное написать код (стОящий того, чтоб его коммитить).

Да, автору на заметку, оператор select ... into ... тоже имеет схожую с инсертом структуру. Даешь новый и селект?
...
Рейтинг: 0 / 0
оператор insert
    #38633231
Insert-Update
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ivan_PisarevskyДа, автору на заметку, оператор select ... into ... тоже имеет схожую с инсертом структуру. Даешь новый и селект?
"Смешались в кучу кони-люди" (с) Причём тут вообще select into сейчас? Неисключаю конечно, что и его можно улучшить, но это уже совсем другая история.
...
Рейтинг: 0 / 0
оператор insert
    #38633241
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денискто нибудь из здешних кроме тебя и fbcore ещё патчи выкладывал?
То, что это могу делать даже я как раз и доказывает, что это не так уж и сложно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
оператор insert
    #38633408
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Insert-UpdateПричём тут вообще select into сейчас?да так рядом стоял просто, следующим будет create view
...
Рейтинг: 0 / 0
оператор insert
    #38633624
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_PisarevskyДа, автору на заметку, оператор select ... into ... тоже имеет схожую с инсертом структуру. Даешь новый и селект?
CORE-4403 :
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
 for 
   select rdb$relation_id as id, rdb$relation_name as name 
   from rdb$relations 
   where rdb$view_blr is null 
   as cursor tables 
 do 
 begin 
   out_id = tables.id; 
   out_name = tables.name; 
   suspend; 
 end


Красота :)
...
Рейтинг: 0 / 0
оператор insert
    #38633819
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickDee> Ещё раз:

Что "ещё раз" ? Написанное тобой как-то
противоречит тому, что написано в моей цитате?

P.S. Я ж говорю - ламеры они и есть ламеры, даже
после того как Ваня пример с комментариями привел.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
оператор insert
    #38633835
Gorynich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В MySQL есть такая конструкция. Почти UPDATE OR INSERT, но "на основе" UPDATE, а не INSERT-a. Было бы здоровско иметь такую штучку в птице.

Код: sql
1.
2.
3.
4.
5.
6.
7.
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
    [INTO] tbl_name
    [PARTITION (partition_name,...)]
    SET col_name={expr | DEFAULT}, ...
    [ ON DUPLICATE KEY UPDATE
      col_name=expr
        [, col_name=expr] ... ]
...
Рейтинг: 0 / 0
оператор insert
    #38633840
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gorynich> Было бы здоровско иметь такую штучку в птице.

А что именно в ней здорового, кроме того, что это альтернативный вариант?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
оператор insert
    #38633856
Gorynich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамА что именно в ней здорового, кроме того, что это альтернативный вариант?


1. INSERT ... SET в такой форме нужно постараться, чтобы перепутать поля/параметры/значения. Особенно важно для таблиц с "большим" количеством полей.
2. При программирование клиентских систем, для insert/update можно использовать один и тот же запрос. (Сейчас использую UPDATE OR INSERT) Но ввиду 1-го, ИМХО, было бы удобнее.
...
Рейтинг: 0 / 0
оператор insert
    #38633870
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gorynich> 1. INSERT ... SET в такой форме нужно постараться,
Gorynich> чтобы перепутать поля/параметры/значения.
Gorynich> Особенно важно для таблиц с "большим" количеством полей.

Так IBE итак подсвечивает, куда уж там перепутать.
Да и комментарии трудно не заметить.

> для insert/update можно использовать один и тот же запрос

Запрос редактировать все равно придётся, так что
не один запрос, хоть и похожий.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
оператор insert
    #38633878
Gorynich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамТак IBE итак подсвечивает, куда уж там перепутать.
Да и комментарии трудно не заметить.


Полностью согласен, но это как авто с коробкой-автоматом. Пока ездишь на механике - лучше не бывает, но после автомата уже не хочется механики (за редким исключением:))
...
Рейтинг: 0 / 0
оператор insert
    #38633903
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gorynich> Полностью согласен, но это как авто с коробкой-автоматом

Нет, это как бла-бла-бла, когда ответить нечего.
Во-первых, это никакая не автоматика, а та же
механика, ибо текст всё-равно набирать руками.
Во-вторых, нынешний синтаксис компактнее,
а вариант с комментариями - не менее и даже
более нагляден (за счёт универсальности).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
оператор insert
    #38633945
Insert-Update
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гаджимурадов РустамНет, это как бла-бла-бла, когда ответить нечего.
Во-первых, это никакая не автоматика, а та же
механика, ибо текст всё-равно набирать руками.
Во-вторых, нынешний синтаксис компактнее,
а вариант с комментариями - не менее и даже
более нагляден (за счёт универсальности).

А это не бла-бла-бла, когда ответить нечего? И главное - что тебя тянет отвечать и зачем?
А про комментарии - это по Фрейду. И конечно же их нигде, кроме текущего синтаксиса insert, использовать нельзя?
Ты сам наглядно доказываешь, что без коментов текущий синтаксис для человека не удобен.
Гаджимурадов РустамP.S. Я ж говорю - ламеры они и есть ламеры, даже
после того как Ваня пример с комментариями привел.

Считаешь кроме тебя никто не умеет готовить insert? Или по твоему видеть его минусы это "ламерство"?
...
Рейтинг: 0 / 0
оператор insert
    #38633955
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Insert-Update> И конечно же их нигде, кроме текущего
Insert-Update> синтаксиса insert, использовать нельзя?

Зачем же нигде? Наоборот, везде, включая insert.
Но так до этого ж догадаться надо. А зачем?
Можно ведь не догадываться, а просто запросить
альтернативный синтаксис для 1% случаев.

> Ты сам наглядно доказываешь, что без коментов
> текущий синтаксис для человека не удобен.

Бред. Тем более я такой бред не утверждаю.

> Считаешь кроме тебя никто не умеет готовить insert?

Нет. Считаю, что большинство именно так и готовит.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
оператор insert
    #38633967
Insert-Update
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гаджимурадов Рустамальтернативный синтаксис для 1% случаев.

У меня такой статистики нет. Но вот про то что новый можно использовать почти в 99% случаев (если не нужна совместимость со стандартом) утверждать вполне можно. А с учётом этого так и в 100% (insert...select так же можно допилить)
К тому же лично у меня insert/update/update or insert только в SP, так что совместимость с другими SQL-наречиями рояли не играет.
Ну и как бонус - update or insert наконец-то станет реально использовать для целей именно update (как сейчас указать старое значение в выражении?)
Гаджимурадов РустамБред. Тем более я такой бред не утверждаю.

А кто сказал что ты утверждал? Ты (с коментами) и Симонов Денис тут
вполне наглядно (при этом абсолютно не специально) показали его (insert statement) неудобства.
...
Рейтинг: 0 / 0
оператор insert
    #38633968
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стандартом предусмотрено, что "insert or update" это merge.
Насколько я понял, в тройке его допилили до полного соответствия стандарту, включая delete.
...
Рейтинг: 0 / 0
оператор insert
    #38634029
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Insert-Update,

это ничего не показывает. Я писал этот кусок прямо в браузере, а потому описался. С таким же успехом и в SET секции что-нибудь забыл. Я же говорю пишешь insert в IBE он подсказывает для какого поля ты пишешь параметр/значение поэтому проблем не вижу.
...
Рейтинг: 0 / 0
оператор insert
    #38634978
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Insert-Update> У меня такой статистики нет.

У ТСа есть.

> Ну и как бонус - update or insert наконец-то станет
> реально использовать для целей именно update

Бред какой-то.

> (как сейчас указать старое значение в выражении?)

Если я правильно понял вопрос, то в upsert-e никак,
юзай для этого merge (который по стандарту, кстати).

> А кто сказал что ты утверждал? Ты (с коментами) и Симонов Денис тут
> вполне наглядно (при этом абсолютно не специально) показали его (insert statement) неудобства.

Денис, скорее всего, набирал это прямо в форуме, потому
и ошибся (что он собсно уже и подтвердил). Набирал бы
в IBE или ещё где - во-первых, не ошибся бы, наверное,
во-вторых, сервер ему бы сообщил об ошибке в рантайм.
Остальной бред без комментариев.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
оператор insert
    #38635013
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамInsert-Update> У меня такой статистики нет.

У ТСа есть.
Я в 15969581 сказал про меньше процента для "insert into ... select from ..." от общего числа insert-ов, тем самым указав на несущественность проблемы впихивания select-а в insert.
Доля обычных инсертов (с values, о которых мы тут и говорим собственно) имхо составляет более 99%.
Так что ты воспринял информацию искажённо.
...
Рейтинг: 0 / 0
25 сообщений из 60, страница 2 из 3
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / оператор insert
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]