Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.06.14;
Скачать: CL | DM;

Вниз

Oracle. Insert   Найти похожие ветки 

 
SergP ©   (2008-09-23 17:14) [0]

нужно написать запрос, типа:
INSERT into table (....) values (....)
но чтобы он срабатывал только при условии
not exists (select * from table where ...)

Как это правильно написать одним запросом?


 
Поросенок Винни-Пух ©   (2008-09-23 17:19) [1]

begin
select .... into l_val;
if l_var <,>,= some_value then
 insert into ......
end;


 
SergP ©   (2008-09-23 17:19) [2]

Пробую так:

INSERT ALL
WHEN NOT EXISTS (SELECT * FROM def_igroup_tbl WHERE IDGROUP=50 AND TABLE_OWNER="DECLTR" AND TABLE_NAME="CARD") THEN
INTO def_igroup_tbl (IDGROUP,table_OWNER,table_name,sendable,deltabale) values (50,"DECLTR","CARD",1,1);


Не хочет работать...


 
SergP ©   (2008-09-23 17:23) [3]

> begin
> select .... into l_val;
> if l_var <,>,= some_value then
> insert into ......
> end;


хм. Предлагаете оформить в виде блока?


 
Игорь Шевченко ©   (2008-09-23 20:24) [4]

merge ?


 
SergP ©   (2008-09-24 10:38) [5]

> merge ?


Хм... Не могу найти синтаксиса MERGE.
Может подскажете?


 
Petr V. Abramov ©   (2008-09-24 11:08) [6]

что not exists?
вставляемое значение в table?
т.е. если записи в table нету, то вставить, если есть - успокоиться?

насчет синтаксиса merge
http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_9016.htm#i2081218

десятошный


 
SergP ©   (2008-09-24 18:35) [7]

> т.е. если записи в table нету, то вставить, если есть -
> успокоиться?


Ага. именно так...

Хотя подумал и решил что проще сделать DELETE, а потом INSERT


 
ANB   (2008-09-24 19:26) [8]


> Ага. именно так...
>
> Хотя подумал и решил что проще сделать DELETE, а потом INSERT

если не нужно обновлять данные в существующей записи - то тупо инсерт с игнором ошибок.
Если нужно, то MERGE


 
SergP ©   (2008-09-24 19:37) [9]

> если не нужно обновлять данные в существующей записи - то
> тупо инсерт с игнором ошибок.


Не получится... в этой таблице нет первичного ключа и уникальных индексов... (таблица не моя и не мне там констрейны придумывать).

А инсерт при этом ошибки не выдаст а может создать дублирующуюся запись.


 
Petr V. Abramov ©   (2008-09-24 20:35) [10]

insert all
 when not exists (select null from T_TABLE where ID = :id) then into T_TABLE
select :id, и пр. поля from dual


 
Petr V. Abramov ©   (2008-09-24 20:36) [11]

работает в 10-ке, в 9-ке не знаю, в 8-ке не помню



Страницы: 1 вся ветка

Текущий архив: 2009.06.14;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.011 c
2-1240600979
kami
2009-04-24 23:22
2009.06.14
Преимущества нескольких соединений (TCP или UDP ) над одним


2-1240845722
Drowsy
2009-04-27 19:22
2009.06.14
Как переименовать таблицу IB?


2-1240689147
Ramil
2009-04-25 23:52
2009.06.14
combobox


2-1240809337
Elun
2009-04-27 09:15
2009.06.14
Проблема с типизованным файлом!


2-1240757274
buzb
2009-04-26 18:47
2009.06.14
Как проверить, существует ли файл на диске.