powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / update or insert как обойти модификацию primary key
3 сообщений из 3, страница 1 из 1
update or insert как обойти модификацию primary key
    #39726982
abwabw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Использую UPDATE OR INSERT .
Вопрос: возможно ли организовать при UPDATE не модифицировать primary key, а при INSERT брать значение из генератора без дополнительных триггеров?

Например:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
CREATE TABLE texample(
field_pk INTEGER NOT NULL,
field_1 VARCHAR(10),
field_2 INTEGER
);
ALTER TABLE texample ADD CONSTRAINT PK_TEXAMPLE PRIMARY KEY (field_PK);

CREATE SEQUENCE GEN_TEXAMPLE_ID;



Провожу модификацию или вставку:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
update or insert INTO texample
(field_pk,
field_1,
field_2)
values
(GEN_ID(gen_texample_id,1),
'ПРИМЕР',
222)
matching (field_2)



З.Ы. В приведённом примере значение field_pk (PRIMARY KEY) при модификации всегда меняется на новое сгенерированное в генераторе.
...
Рейтинг: 0 / 0
update or insert как обойти модификацию primary key
    #39726989
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
abwabw,

возможно, но для этого надо либо делать before insert триггер где будет дёргаться генератор, либо использовать IDENTITY столбец.

Если это не устраивает используй более навороченный оператор MERGE там это легко решается.
...
Рейтинг: 0 / 0
update or insert как обойти модификацию primary key
    #39727215
abwabw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис,

Правильно, MERGE рулит.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / update or insert как обойти модификацию primary key
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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