Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 пересечение наборов данных  [new]
хм...
Guest
мое почтение.
расскажите, если не сложно, как умные люди делают подобные операции:
declare @base table (string varchar(128), isDeleted bit)
insert into @base
			select 'aaa', 0
	union all	select 'bbb', 0
	union all	select 'ccc', 1
	union all	select 'ddd', 0
	union all	select 'xxx', 1

declare @src table (string varchar(128))

insert into @src
			select 'aaa'
	union all	select 'ccc'
	union all	select 'ddd'
	union all	select 'eee'

select * from @base

--begin tran
--select top 0 * from @src with (updlock)

-- актуальные --> удаленные
update @base set isDeleted = 1
	where string not in (select * from @src) and isDeleted = 0
-- удаленные --> актуальные
update @base set isDeleted = 0
	where string in (select * from @src) and isDeleted = 1
-- добавление новых
insert into @src (string)
	select * from @src where string not in (select string from @base)

--commit

select * from @base
и еще вопросик:
в скрипте, я обозначил блокировку таблицы на изменение данных - корректно, при условии что в реальном скрипте, конечно, не временные таблицы?
7 апр 06, 16:28    [2537511]     Ответить | Цитировать Сообщить модератору
 Re: пересечение наборов данных  [new]
GreenSunrise
Member

Откуда:
Сообщений: 12310
TOP 10 вопрос 9
7 апр 06, 16:37    [2537573]     Ответить | Цитировать Сообщить модератору
 Re: пересечение наборов данных  [new]
хм...
Guest
GreenSunrise, спасибо
а по второму вопросу?
7 апр 06, 16:53    [2537680]     Ответить | Цитировать Сообщить модератору
 Re: пересечение наборов данных  [new]
хм...
Guest
кстати по поводу статьи - всевозможные выборки я умею писать. тут проблема именно в обновлении записей
7 апр 06, 16:59    [2537708]     Ответить | Цитировать Сообщить модератору
 Re: пересечение наборов данных  [new]
GreenSunrise
Member

Откуда:
Сообщений: 12310
Что селект, что обновление... Там примеры на работу с множествами. Чтобы не in (select id from ...) писать, а нормальные джойны.

По поводу блокировки:
- вы думаете, top 0 что-нибудь заблокирует?
- зачем вообще блокировка всей таблицы
- есть такие хинты как tablock и tablockx, но опять же вопрос - зачем
7 апр 06, 17:09    [2537767]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить