powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / INSERT если не прошел UPDATE
3 сообщений из 3, страница 1 из 1
INSERT если не прошел UPDATE
    #34802147
Фотография Zashibis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такой запрос на MS SQL Server:
Код: plaintext
1.
2.
3.
Update _1SSTREAM set DATE_TIME_DOCID=? where ID=?;
If @@ROWCOUNT =  0  
Insert into _1SSTREAM (ID, DATE_TIME_DOCID) values(?, ?)
В переводе на русский - Если не прошел UPDATE то делаем INSERT
Запрос надо выполнить НЕ В хранимой процедуре
Никого IF FOUND=false соответственно делать нельзя.
Как проще всего поступить на PostgreSQL?

Спасибо.
...
Рейтинг: 0 / 0
INSERT если не прошел UPDATE
    #34802166
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZashibisЕсть такой запрос на MS SQL Server:
Код: plaintext
1.
2.
3.
Update _1SSTREAM set DATE_TIME_DOCID=? where ID=?;
If @@ROWCOUNT =  0  
Insert into _1SSTREAM (ID, DATE_TIME_DOCID) values(?, ?)
В переводе на русский - Если не прошел UPDATE то делаем INSERT
Запрос надо выполнить НЕ В хранимой процедуре
Никого IF FOUND=false соответственно делать нельзя.
Как проще всего поступить на PostgreSQL?

Спасибо.

уже обсуждали, возможно в 8.3 сделают что-то похожее в одном запросе или в следующих версиях.
...
Рейтинг: 0 / 0
INSERT если не прошел UPDATE
    #34802595
Фотография Zashibis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем, если кому пригодится...
Решение корявое, но все таки
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
create function UPDATE_OR_INSERT (p_query_update text,p_query_insert text) returns void as 
$$ 
declare 
begin
execute p_query_update;
if FOUND=false then 
execute(p_query_insert);
end if;
end
$$ language plpgsql;

SELECT UPDATE_OR_INSERT('UPDATE _1SSTREAM SET DATE_TIME_DOCID = '||?||' WHERE ID = '||?, 'INSERT INTO _insert__1SSTREAM (ID, DATE_TIME_DOCID) VALUES ('||?||', '||?||')'::text)

:(
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / INSERT если не прошел UPDATE
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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