-
нужно написать запрос, типа: INSERT into table (....) values (....) но чтобы он срабатывал только при условии not exists (select * from table where ...)
Как это правильно написать одним запросом?
-
begin select .... into l_val; if l_var <,>,= some_value then insert into ...... end;
-
Пробую так: 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); Не хочет работать...
-
> begin > select .... into l_val; > if l_var <,>,= some_value then > insert into ...... > end;
хм. Предлагаете оформить в виде блока?
-
merge ?
-
> merge ?
Хм... Не могу найти синтаксиса MERGE. Может подскажете?
-
-
> т.е. если записи в table нету, то вставить, если есть - > успокоиться?
Ага. именно так...
Хотя подумал и решил что проще сделать DELETE, а потом INSERT
-
> Ага. именно так... > > Хотя подумал и решил что проще сделать DELETE, а потом INSERT
если не нужно обновлять данные в существующей записи - то тупо инсерт с игнором ошибок. Если нужно, то MERGE
-
> если не нужно обновлять данные в существующей записи - то > тупо инсерт с игнором ошибок.
Не получится... в этой таблице нет первичного ключа и уникальных индексов... (таблица не моя и не мне там констрейны придумывать).
А инсерт при этом ошибки не выдаст а может создать дублирующуюся запись.
-
insert all
when not exists (select null from T_TABLE where ID = :id) then into T_TABLE
select :id, и пр. поля from dual
-
работает в 10-ке, в 9-ке не знаю, в 8-ке не помню
|