Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.03.25;
Скачать: [xml.tar.bz2];

Вниз

Еще вот такой вопрос...   Найти похожие ветки 

 
tovSuhov   (2002-02-25 14:49) [0]

Записываю некоторые данные в таблицу...
Но штука в том, что там уже могут находиться точно такие-же записи. Раньше я просто удалял всё и переписывал весь комплект данных заново вместе с изменениями. Но у такого подхода множество недостатков, один из них - невозможность посадить триггер на удаление одной записи.
Применять "в лоб" оператор update тоже нехорошо, т.к. данные, которые я попытаюсь записать, в таблице еще могут не существовать. Поэтому первое, что мне пришло на ум - сперва проверять, есть ли в таблице такая запись, а потом делать либо update, либо insert. Тогда получается, что для добавления одной записи приходится выполнять два запроса. А когда этих записей несколько сотен, это становится довольно заметно...
Вот и хочу спросить у Знатоков:
можно ли сделать добавление одним запросом, что-то типа
if <запись есть> then update(...) else insert(...)
не прибегая к хранимой процедуре?


 
MetallAdm   (2002-02-25 15:14) [1]

ну вообшем мы смотрим сначала есть такая запись или нет !
ну незнаю каких тпов у тебя там поля ну я условно покажу

declare @x1 typexxx
declare @x2 typexxx
declare @x3 typexxx
declare @xn typexxx


select @x1=поле1,@x2=поле2,@x3=поле3,...@xn=полеН from table
а потом смотришь какие значения ты пытаешся пихать
where поле1="повая запись" and поле2="повая запись"

if @x1 is null
begin
select "облом такая запись есть :)"
end

Ну думаю сдеся наверное процедурку придеися сделать с
параметрами

которая и смотрит что ты хочеш пропихнуть !!



 
Vadim   (2002-02-26 14:04) [2]

Где - то я читал про такой приём:
1) пишешь все новые данные в специально созданную (временную?) таблицу;
2) выполняешь insert into table1 select * from temptable where ..., где в условии пишешь, чё те надо или не надо.
3) delete from temptable.


 
Alexander Vasjuk   (2002-02-26 14:40) [3]

INSERT INTO tbl
SELECT @val1, @val2, @val3... FROM left_tbl
WHERE tbl1.fld1 <> @val1

где left_tbl - какая-нибудь таблица с одной записью



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

Форум: "Базы";
Текущий архив: 2002.03.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.004 c
1-80544
yakshe
2002-03-07 23:54
2002.03.25
Удалить строку из TStringGrid


4-80720
Cranium
2002-01-25 01:47
2002.03.25
Как с помощью API под Windows 2000 server писать в LPT?


14-80663
Merlin
2002-02-11 13:00
2002.03.25
test


14-80670
Merlin
2002-02-08 13:42
2002.03.25
Логотип


1-80476
fag2000@ok.ru
2002-03-12 11:52
2002.03.25
Как отлаживать DLL?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский