Форум: "Базы";
Текущий архив: 2009.06.14;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.005 c