Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Избавиться от холостого срабатывания генератора в insert into / 25 сообщений из 32, страница 1 из 2
02.04.2021, 03:05
    #40058990
antox
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Избавиться от холостого срабатывания генератора в insert into
При нахождении строки по tab2_id, typ2 происходит обновление, но срабатывает генератор gen_tab1_id и первичный ключ tab1_id меняется на новое значение, чего не надо при update , это необходимо только в случае, если по tab2_id, typ2 строка не найдена и сработал insert into , не могу сообразить, как для этого изменить запрос :)

Код: sql
1.
2.
UPDATE OR INSERT INTO tab1 (tab1_id, tab2_id, typ2, num2) VALUES (GEN_ID(gen_tab1_id, 1), :tab2_id, :typ2, :num2)
matching (tab2_id, typ2)
...
Рейтинг: 0 / 0
02.04.2021, 04:01
    #40058991
IBExpert
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Избавиться от холостого срабатывания генератора в insert into
Дергать генератор в триггере на вставку, а не в запросах.
...
Рейтинг: 0 / 0
02.04.2021, 10:18
    #40059017
Ivan_Pisarevsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Избавиться от холостого срабатывания генератора в insert into
Пока можно сказать, что выстрел себе в ногу в чистом виде, если будет ДДЛ, может и удастся нивелировать нехорошее впечатление от примера кода.
...
Рейтинг: 0 / 0
02.04.2021, 12:44
    #40059074
antox
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Избавиться от холостого срабатывания генератора в insert into
IBExpert
Дергать генератор в триггере на вставку, а не в запросах.

Не хотелось бы, но можно, если только так
...
Рейтинг: 0 / 0
02.04.2021, 12:44
    #40059075
antox
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Избавиться от холостого срабатывания генератора в insert into
Ivan_Pisarevsky
Пока можно сказать, что выстрел себе в ногу в чистом виде, если будет ДДЛ, может и удастся нивелировать нехорошее впечатление от примера кода.


Как можно белее корректно решить задачу?
...
Рейтинг: 0 / 0
02.04.2021, 12:47
    #40059077
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Избавиться от холостого срабатывания генератора в insert into
02.04.2021 12:44, antox пишет:
> Как можно белее корректно решить задачу?

никому не показывай DDL!
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
02.04.2021, 12:53
    #40059079
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Избавиться от холостого срабатывания генератора в insert into
И главное - не рассказывай что за задача. Пусть догадываются по кривым попыткам решения.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
02.04.2021, 12:57
    #40059082
Ivan_Pisarevsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Избавиться от холостого срабатывания генератора в insert into
antox
Как можно белее корректно решить задачу?
Ivan_Pisarevsky
если будет ДДЛ, может и удастся
:)
...
Рейтинг: 0 / 0
02.04.2021, 13:11
    #40059088
KreatorXXI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Избавиться от холостого срабатывания генератора в insert into
antox
IBExpert
Дергать генератор в триггере на вставку, а не в запросах.

Не хотелось бы, но можно, если только так

Запрет на использование триггеров? Логика на клиенте?
...
Рейтинг: 0 / 0
02.04.2021, 13:17
    #40059089
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Избавиться от холостого срабатывания генератора в insert into
KreatorXXIЗапрет на использование триггеров?

Не, это же придётся гуглить что такое триггеры и как их писать.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
02.04.2021, 13:25
    #40059094
a7exander
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Избавиться от холостого срабатывания генератора в insert into
Еще вариант - раздельно делать апдейт и инсерт
...
Рейтинг: 0 / 0
02.04.2021, 13:27
    #40059096
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Избавиться от холостого срабатывания генератора в insert into
02.04.2021 13:25, a7exander пишет:
> Еще вариант - раздельно делать апдейт и инсерт

универсальный триггер это прекрасно умеет делать.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
02.04.2021, 13:29
    #40059097
ggreggory
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Избавиться от холостого срабатывания генератора в insert into
antox

Как можно белее корректно решить задачу?


попробуйте execute block
...
Рейтинг: 0 / 0
02.04.2021, 13:32
    #40059101
a7exander
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Избавиться от холостого срабатывания генератора в insert into
Мимопроходящийуниверсальный триггер это прекрасно умеет делать.

ну вдруг человеку это запрещено? :)
...
Рейтинг: 0 / 0
02.04.2021, 14:03
    #40059110
KreatorXXI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Избавиться от холостого срабатывания генератора в insert into
a7exander
Еще вариант - раздельно делать апдейт и инсерт

"update or insert" я использую, например, как лёгкую замену merge. В этом случае разделить нельзя. Возможно и у ТС такое. Скорее всего. Это удобно. Иначе городить запрос на проверку и ещё два запроса на изменение.
...
Рейтинг: 0 / 0
02.04.2021, 15:50
    #40059141
antox
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Избавиться от холостого срабатывания генератора в insert into
KreatorXXI
antox
пропущено...

Не хотелось бы, но можно, если только так

Запрет на использование триггеров? Логика на клиенте?


Иногда хочется получать значение ключа перед вставкой, а с триггером же он снова генератор запросит, даже, если этого в данной ситуации было делать не надо.
...
Рейтинг: 0 / 0
02.04.2021, 15:51
    #40059142
antox
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Избавиться от холостого срабатывания генератора в insert into
a7exander
Еще вариант - раздельно делать апдейт и инсерт


Так совсем не хочется :)
...
Рейтинг: 0 / 0
02.04.2021, 15:53
    #40059143
antox
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Избавиться от холостого срабатывания генератора в insert into
KreatorXXI
a7exander
Еще вариант - раздельно делать апдейт и инсерт

"update or insert" я использую, например, как лёгкую замену merge. В этом случае разделить нельзя. Возможно и у ТС такое. Скорее всего. Это удобно. Иначе городить запрос на проверку и ещё два запроса на изменение.


Такое-то оно такое, только ID меняется на каждый чих :(
...
Рейтинг: 0 / 0
02.04.2021, 15:54
    #40059144
antox
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Избавиться от холостого срабатывания генератора в insert into
Мимопроходящий

02.04.2021 13:25, a7exander пишет:
> Еще вариант - раздельно делать апдейт и инсерт

универсальный триггер это прекрасно умеет делать.


"Универсальный" - тут ключевое?
...
Рейтинг: 0 / 0
02.04.2021, 15:54
    #40059145
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Избавиться от холостого срабатывания генератора в insert into
antox
Такое-то оно такое, только ID меняется на каждый чих :(
ID меняется - это интересно.
...
Рейтинг: 0 / 0
02.04.2021, 15:58
    #40059146
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Избавиться от холостого срабатывания генератора в insert into
antoxИногда хочется получать значение ключа перед вставкой

Хочется - перехочется. Получай после. RTFM RETURNING.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
02.04.2021, 16:04
    #40059147
antox
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Избавиться от холостого срабатывания генератора в insert into
Dimitry Sibiryakov

И главное - не рассказывай что за задача. Пусть догадываются по кривым попыткам решения.


Так задача в первом посте - если по двум полям (целому числовому и текстовому) совпадение, то третье числовое переписать, иначе добавить новую запись со значениями трёх этих полей + автоинкремент по ключу с генератора
...
Рейтинг: 0 / 0
02.04.2021, 16:08
    #40059149
antox
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Избавиться от холостого срабатывания генератора в insert into
Dimitry Sibiryakov

antoxИногда хочется получать значение ключа перед вставкой

Хочется - перехочется. Получай после. RTFM RETURNING.


RETURNING пользую, но да, оно всегда после...
...
Рейтинг: 0 / 0
02.04.2021, 16:15
    #40059151
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Избавиться от холостого срабатывания генератора в insert into
antox
Иногда хочется получать значение ключа перед вставкой, а с триггером же он снова генератор запросит, даже, если этого в данной ситуации было делать не надо.
а вот это уж как ты триггер напишешь
...
Рейтинг: 0 / 0
02.04.2021, 16:37
    #40059153
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Избавиться от холостого срабатывания генератора в insert into
antoxИногда хочется получать значение ключа перед вставкой
ну что за ересь - где в приведенном примере update or insert получение значения генератора ПЕРЕД
вставкой??? Ладно бы как параметр передавалось. Но там же явно gen_id написан. Поэтому "перед" его никак не получить.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Избавиться от холостого срабатывания генератора в insert into / 25 сообщений из 32, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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