powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / оператор insert
60 сообщений из 60, показаны все 3 страниц
оператор insert
    #38630989
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть одно неудобство при использовании Insert. Не всегда понятно какое значение к какому полю относится. Особенно когда полей много.
У Update такой проблемы нет.
Имхо было бы более читабельно писать типа такого:
Код: sql
1.
insert into T values (F1 = :F1, F2 = :F2, ..., FN = :FN)


Чтобы было видно какие значения куда пишутся, без подсчёта запятых.
...
Рейтинг: 0 / 0
оператор insert
    #38630992
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickDeeЧтобы было видно какие значения куда пишутся, без подсчёта запятых.
Именно поэтому лично я обычно пишу его в две строки, давая параметрам имена, совпадающие
по длине с именами полей. Счёт запятых преращается в тривиальную задачу.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
оператор insert
    #38631001
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovСчёт запятых преращается в тривиальную задачу.
Как только полей больше трёх, так считать становится скучновато. Более десяти - уже челендж :)
...
Рейтинг: 0 / 0
оператор insert
    #38631008
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickDee,

вроде как IBE подсказку делает. А с претензиями это к разработчикам SQL стандарта
...
Рейтинг: 0 / 0
оператор insert
    #38631010
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickDeeБолее десяти - уже челендж :)
Да ну?
Код: sql
1.
2.
3.
insert into t
( F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14, F15, F16, F17, F18) values
(:P1,:P2,:P3,:P4,:P5,:P6,:P7,:P8,:P9,:P10,:P11,:P13,:P14,:P15,:P16,:P17,:P18)


Для тебя челендж заметить недостающий параметр в этом примере с восемнадцатью полями?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
оператор insert
    #38631026
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
insert into T
(Id, Guid, "Time", Str, "Float", PrevId) values
(GEN_ID('G_T', 1), '{FAFB893E-8878-4709-98F4-459E7C4A59FC}', current_timestamp, Null, 198.3675483, select max(Id) from T)


Добавить ещё пяток полей, и начнётся скукота.
...
Рейтинг: 0 / 0
оператор insert
    #38631031
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Неиспользующие параметры - ССЗБ.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
оператор insert
    #38631212
Insert-Update
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NickDee,
Удобнее была бы почти полная аналогия update:
Код: plsql
1.
2.
3.
4.
5.
insert/update/update or insert Tablename T set 
  T.F1 = :F1, 
  T.F2 = :F2, 
  ...,
  T.FN = :FN


Вот тока не стандартно оно. А это само по себе уже сильное обоснование ненужности ;)
...
Рейтинг: 0 / 0
оператор insert
    #38631257
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Insert-UpdateВот тока не стандартно оно. А это само по себе уже сильное обоснование ненужности ;)
Подождём пока это не станет стандартом? :)
...
Рейтинг: 0 / 0
оператор insert
    #38631696
Insert-Update
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NickDeeПодождём пока это не станет стандартом? :)
Или пока кто-то не проспонсирует конкретно эту фичу. Так как это только синтаксический сахар - может даже и не дорого выйдет
...
Рейтинг: 0 / 0
оператор insert
    #38632086
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Insert-UpdateИли пока кто-то не проспонсирует конкретно эту фичу
-1
Так недолго дожить и до нового SQL-языка Firebird ;)
...
Рейтинг: 0 / 0
оператор insert
    #38632119
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если уж и прямая подсказка ДСа непонятна, то
хотя бы расскажите ламерам про комментарии.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
оператор insert
    #38632272
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickDeeКак только полей больше трёх, так считать становится скучновато.вот и не пиши более трех в одну строку. "Прачо" вообще спич?
NickDeeИмхо было бы более читабельно писать типа такого:Как в эту читабельную хрень впихнуть select? insert into () select .. from...?

баловство.
...
Рейтинг: 0 / 0
оператор insert
    #38632450
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_PisarevskyКак в эту читабельную хрень впихнуть select?
Никак.
Я предлагаю расширить синтаксис обычного insert. Т.е. insert from select останется как был. Таких инсертов кстати меньше процента.
...
Рейтинг: 0 / 0
оператор insert
    #38632553
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickDee> Я предлагаю расширить синтаксис обычного insert.

Тебе уже подсказали целых два варианта, не менее удобных и наглядных.

NickDee> Таких инсертов кстати меньше процента.

Тем более в сад.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
оператор insert
    #38632691
Insert-Update
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гаджимурадов РустамТебе уже подсказали целых два варианта, не менее удобных и наглядных.
Тем более в сад.

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

Не менее удобных, чем варианты типа

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
insert ... set
  F1 = :F1, 
  F2 = :F2, 

-- или 

insert ... values(
  F1 = :F1, 
  F2 = :F2, 



> PS: если не понятна мысль/идея - лучше сначала хотя бы уточнить

Кому непонятно - тот пусть и уточняет, как вот ты сейчас.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
оператор insert
    #38632759
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамInsert-Update> Не менее удобных чем что?

Не менее удобных, чем варианты типа

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
insert ... set
  F1 = :F1, 
  F2 = :F2, 

-- или 

insert ... values(
  F1 = :F1, 
  F2 = :F2, 



Ещё раз:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
insert into T(
  Id, 
  Guid, 
  "Time", 
  Str, 
  "Float", 
  PrevId
) values (
  GEN_ID('G_T', 1), 
  '{FAFB893E-8878-4709-98F4-459E7C4A59FC}', 
  current_timestamp, 
  Null, 
  198.3675483, 
  select max(Id) from T
)

vs
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
insert into T values(
  Id = GEN_ID('G_T', 1), 
  Guid = '{FAFB893E-8878-4709-98F4-459E7C4A59FC}', 
  "Time" = current_timestamp, 
  Str = Null,
  "Float" = 198.3675483, 
  PrevId = select max(Id) from T
)

or
Код: sql
1.
2.
3.
4.
5.
6.
7.
insert into T set
  Id = GEN_ID('G_T', 1), 
  Guid = '{FAFB893E-8878-4709-98F4-459E7C4A59FC}', 
  "Time" = current_timestamp, 
  Str = Null,
  "Float" = 198.3675483, 
  PrevId = select max(Id) from T
...
Рейтинг: 0 / 0
оператор insert
    #38632990
anpl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickDeeГаджимурадов РустамInsert-Update> Не менее удобных чем что?

Не менее удобных, чем варианты типа

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
insert ... set
  F1 = :F1, 
  F2 = :F2, 

-- или 

insert ... values(
  F1 = :F1, 
  F2 = :F2, 



Ещё раз:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
insert into T(
  Id, 
  Guid, 
  "Time", 
  Str, 
  "Float", 
  PrevId
) values (
  GEN_ID('G_T', 1), 
  '{FAFB893E-8878-4709-98F4-459E7C4A59FC}', 
  current_timestamp, 
  Null, 
  198.3675483, 
  select max(Id) from T
)

vs
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
insert into T values(
  Id = GEN_ID('G_T', 1), 
  Guid = '{FAFB893E-8878-4709-98F4-459E7C4A59FC}', 
  "Time" = current_timestamp, 
  Str = Null,
  "Float" = 198.3675483, 
  PrevId = select max(Id) from T
)

or
Код: sql
1.
2.
3.
4.
5.
6.
7.
insert into T set
  Id = GEN_ID('G_T', 1), 
  Guid = '{FAFB893E-8878-4709-98F4-459E7C4A59FC}', 
  "Time" = current_timestamp, 
  Str = Null,
  "Float" = 198.3675483, 
  PrevId = select max(Id) from T



Согласен не совсем удобно! И сама идея хорошая )))
Но. никто не мешает все значения добавить в переменные, а потом
Код: sql
1.
2.
insert into T (Id, Guid, "Time", Str, "Float", PrevId)
value          (:vId,:vGuid,:vTime,:vStr,:vFloat,:vPrevId)
...
Рейтинг: 0 / 0
оператор insert
    #38632992
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тут уже при имеющимся синтаксисе вариантов море, а тебе еще надо?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
insert into T(
  Id, 
  Guid, 
  "Time", 

  Str, 
  "Float", 
  PrevId

) values (

  GEN_ID('G_T', 1), 
  '{FAFB893E-8878-4709-98F4-459E7C4A59FC}', 
  current_timestamp, 

  Null, 
  198.3675483, 
  select max(Id) from T

)


Код: sql
1.
2.
3.
4.
5.
6.
7.
insert into T(
  Id,   Guid,   "Time", 
  Str,  "Float", PrevId
) values (
  GEN_ID('G_T', 1), '{FAFB893E-8878-4709-98F4-459E7C4A59FC}', current_timestamp, 
  Null, 198.3675483, select max(Id) from T
)


Код: sql
1.
2.
3.
4.
5.
6.
7.
insert into T(
  Id,                        Guid,                            "Time", 
  Str,     "Float",         PrevId
) values (
  GEN_ID('G_T', 1), '{FAFB893E-8878-4709-98F4-459E7C4A59FC}', current_timestamp, 
  Null, 198.3675483, select max(Id) from T
)


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
insert into T(
  Id, 
  Guid, 
  "Time", 
  Str, 
  "Float", 
  PrevId
) values (
  GEN_ID('G_T', 1), --id
  '{FAFB893E-8878-4709-98F4-459E7C4A59FC}', -- Guid
  current_timestamp, --Time
  Null, --Str
  198.3675483, --Float
  select max(Id) from T --PrevId
)
...
Рейтинг: 0 / 0
оператор insert
    #38633015
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а где деньги?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
оператор insert
    #38633050
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
anplНо. никто не мешает все значения добавить в переменные, а потом
Код: 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

Это не конструктивно.
...
Рейтинг: 0 / 0
оператор insert
    #38633073
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
    #38633079
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

блин Guid забыл
...
Рейтинг: 0 / 0
оператор insert
    #38633081
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_PisarevskyТут уже при имеющимся синтаксисе вариантов море, а тебе еще надо?
А что бы ты сказал, если бы синтаксис update был бы как у insert? Т.е. сначала в одних скобках перечислим все поля, а во вторых скобках перечислим значения, типа:
Код: sql
1.
update T set (Str, "Float") to ('Str', "Float" * 2) where Id = 1 


Я так понимаю, что если бы составители sql-стандарта в своё время прописали именно такой синтаксис, то весь мир бы сейчас писал именно так, и считал бы это удобным. Все бы считали запятые, писали в столбик, или использовали параметры. А я бы так же предложил расширить синтаксис update до человеко-ориентированного. И вы возможно точно так же сопротивлялись бы :)
...
Рейтинг: 0 / 0
оператор 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
оператор insert
    #38635036
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickDee> Так что ты воспринял информацию искажённо.

Возможно. Так сколько там процентов "длинных" insert-ов, с
несколькими десятками полей/параметров? Хотя лично у тебя
с твоей манией "всё в ширину" таких может быть и большинство.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
оператор insert
    #38635050
Сисдба Мастеркеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то меня смущает идея одни инсерты писать так, а другие - ВОТТАК.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
оператор insert
    #38635089
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так ты не фтыкаешь потому что!
Или не ошибаешься. Или IBE юзаешь.
А оне - сплошь широкие инсерты в
ISQLax и блокнотах пишут, ошибаются.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
оператор insert
    #38635145
hpmor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
— Угу, — хмыкнул Гарри. — Видите ли, есть такая штука под названием «когнитивный диссонанс», а если выражаться проще — «зелен виноград». Если бы людей каждый месяц лупили дубинкой по голове и никто не мог ничего по этому поводу сделать, довольно скоро появились бы всякого рода философы, которые, притворяясь мудрыми, как вы выразились, нашли бы уйму изумительных преимуществ в том, что тебя ежемесячно лупят дубинкой по голове. Ну, например, что это делает тебя сильнее или что ты счастливее в те дни, когда тебя не дубасят. Но если вы подойдёте к кому-то, кого не лупят дубинкой, и спросите, не хотят ли они, чтобы их начали, в обмен на эти изумительные преимущества, они откажутся.
...
Рейтинг: 0 / 0
оператор insert
    #38635220
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сисдба МастеркеевичЧто-то меня смущает идея одни инсерты писать так, а другие - ВОТТАК.

А что у insert и update синтаксис разный, хотя и тот и другой по сути говорят какие поля в какие значения нужно установить + указывают идентификатор операции - это не смущает?
Меня вот смущает идея апдейты писать нормально, а инсерты - менее читабельно и менее писабельно.

Кстати в order by и group by были введены удобные конструкции, типа: group by 1, или order by 3, 4.
Кому-то удобно писать с циферками, кому-то удобно писать названия полей.

Ещё есть "create sequence + next value for" и "create generator + gen_id".
Ещё есть "select [first n] [skip m]" и "select ... [rows n [to m]]".
...
Рейтинг: 0 / 0
оператор insert
    #38635232
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickDeeА что у insert и update синтаксис разныйСам по себе язык SQL имеет довольно спорный синтаксис, но он стандартизирован и к нему привыкли.

NickDeeКому-то удобно писать с циферками, кому-то удобно писать названия полей.Если первым полем стоит подзапрос, то зело удобней писать циферкой (1), чем копипастить оный в секцию груп/ордер или обертывать снаружи еще одним внешним селектом.

NickDeeЕщё есть "select [first n] [skip m]" и "select ... [rows n [to m]]".первый кустарный, второй стандартный.

NickDeeМеня вот смущает идея апдейты писать нормальнооператор апдейт имеет довольно много ограничений, например нельзя сджойнить что-то с чем-то и потом проапдейтить то, что получилось.
...
Рейтинг: 0 / 0
оператор insert
    #38635246
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickDeeЕщё есть "create sequence + next value for" и "create generator + gen_id".
Ещё есть "select [first n] [skip m]" и "select ... [rows n [to m]]".
"create generator + gen_id" был исторически когда последовательностей не было в стандарте, когда они появились добавили синтаксис из стандарта

"select [first n] [skip m]" появился в FB1.5 позже в IB добавили rows который ближе к стандарту, потом его добавили и в FB.

Циферки в group by и order by разрешены стандартом, а вот алиасы полей нет, хотя это и удобно.
...
Рейтинг: 0 / 0
оператор insert
    #38635273
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис> "select [first n] [skip m]" появился в FB1.5
Симонов Денис> позже в IB добавили rows который ближе к стандарту

AFAIK, first/skip до сих пор отсутствует в стандарте, а rows есть.

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

ROWS в стандарте есть, но в FB он вроде не полностью реализован

я не знаю как он там в стандарте полностью выглядит, но в оракл 12 вот так

[ OFFSET offset { ROW | ROWS } ]
[ FETCH { FIRST | NEXT } [ { rowcount | percent PERCENT } ]
{ ROW | ROWS } { ONLY | WITH TIES } ]

"update и insert одно и то же" это не моя фраза
...
Рейтинг: 0 / 0
оператор insert
    #38635384
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это да, я имею в виду, что Rows - по стандарту, а
First/Skip - это сугубо FBшная хрень, даже не IBшная.
Хотя лично мне более привычная и удобная.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
60 сообщений из 60, показаны все 3 страниц
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / оператор insert
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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