Форум: "Базы";
Текущий архив: 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