Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Update строки в таблице  [new]
antonych
Member

Откуда:
Сообщений: 157
Нужен совет:

Имеентся хп, принимающая кучу параметров для последующей команды update над конкретной строкой некотрой таблицей, update-триггер которой переносит строку до изменения в другую таблицу (в ней хранится история изменений).

Вопрос: как лучше организовать в хп проверку входных параметров на предмет их полного совпадения со значениями соответствующих колонок в таблице, чтобы по-напрасну не выполнялся триггер и не "разрасталасть" таблица истории внесенных изменений?
21 дек 09, 14:56    [8095987]     Ответить | Цитировать Сообщить модератору
 Re: Update строки в таблице  [new]
iljy
Member

Откуда:
Сообщений: 8711
antonych,
вы хотите проверить, есть ли такие значения в таблице, в смысле полное совпадение строк? Можно так:
if(exists(
   select @val1,@val2,@val3
     except
   select * from Table1
))
  ...
else
  ...
21 дек 09, 15:01    [8096046]     Ответить | Цитировать Сообщить модератору
 Re: Update строки в таблице  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
Автор, а рассматривали ли Вы вариант занесения информации в "таблицу истории"
не триггером,
а тем же update-запросом, добавив в него output
?
21 дек 09, 15:03    [8096072]     Ответить | Цитировать Сообщить модератору
 Re: Update строки в таблице  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
iljy
antonych,
вы хотите проверить, есть ли такие значения в таблице, в смысле полное совпадение строк? Можно так:
if(exists(
   select @val1,@val2,@val3
     except
   select * from Table1
))
  ...
else
  ...
Это будет работать, только если в @val1,@val2,@val3 входит PK.
Иначе будет сравниваться бог знает что...
21 дек 09, 15:11    [8096146]     Ответить | Цитировать Сообщить модератору
 Re: Update строки в таблице  [new]
antonych
Member

Откуда:
Сообщений: 157
За совет применить

if(exists(
select @val1,@val2,@val3
except
select * from Table1
))
...
else
...

большущее спасибо. Буду пробовать именно этот вариант.
21 дек 09, 15:13    [8096165]     Ответить | Цитировать Сообщить модератору
 Re: Update строки в таблице  [new]
iljy
Member

Откуда:
Сообщений: 8711
iap,

вроде как речь шла про сравнение полной строки? Тогда сервер вполне спокойно развернет такой запрос в поиск по индексу (скорее всего кластерному) и проверит не входящие в индекс поля. Скана не будет, правда-правда!
21 дек 09, 15:50    [8096494]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить