Главная страница
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.014 c
14-80676
Atrem
2002-02-10 18:16
2002.03.25
Как удалить Windows 2000 Professional


3-80405
IronHawk
2002-02-22 16:50
2002.03.25
Кто может - поможет ! Уважаемые Мастера ! Снова DBGrid !!!


6-80649
otari
2002-01-09 10:59
2002.03.25
Как мне откривать кокоинибуть TPC/IP порт


14-80680
Loxly
2002-02-12 14:51
2002.03.25
О написании help ов


1-80614
BDRON
2002-03-11 18:09
2002.03.25
Упаковка/распоковка файлов