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

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.012 c
14-80688
mobcos
2002-02-08 21:53
2002.03.25
Господа программисты помогите!


1-80562
KvORubin
2002-03-08 09:46
2002.03.25
Какой компонент может просматривать картинку JPG или GIF ???


1-80493
A.H.
2002-03-12 19:26
2002.03.25
TImage - почему у меня ничего не получается :-(( ??


3-80409
Demon[DZ]
2002-02-26 11:06
2002.03.25
Poisk v DBTreeView


1-80597
Сергей Шайкин
2002-03-11 11:38
2002.03.25
построение трехмерного графика