Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / INSERT если не прошел UPDATE / 3 сообщений из 3, страница 1 из 1
14.09.2007, 20:18
    #34802147
Zashibis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
INSERT если не прошел UPDATE
Есть такой запрос на 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
14.09.2007, 20:27
    #34802166
Winnipuh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
INSERT если не прошел UPDATE
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
15.09.2007, 14:22
    #34802595
Zashibis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
INSERT если не прошел UPDATE
В общем, если кому пригодится...
Решение корявое, но все таки
Код: 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
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / INSERT если не прошел UPDATE / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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