Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
1-1211356137
Vlad Oshin
2008-05-21 11:48
2009.06.14
Как бы сделать лог действий в виде перечисления компонент


15-1239358077
kaif
2009-04-10 14:07
2009.06.14
Как удалить запись из реестра? :)


2-1240836697
Student
2009-04-27 16:51
2009.06.14
Область видимости???


15-1239049804
Юрий
2009-04-07 00:30
2009.06.14
С Днём рождения ! 7 апреля 2009 вторник


2-1240746474
madmech
2009-04-26 15:47
2009.06.14
Неправильная раскраска отчета (и не только)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский