Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Оптимизировать триггер update, частично блокирующий записи / 2 сообщений из 2, страница 1 из 1
22.07.2008, 09:58
    #35443801
Helekryl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизировать триггер update, частично блокирующий записи
Необходимо написать как можно более быстро работающий триггер на таблицу (пусть она зовется main), который при попытке update блокирует апдейт записей, отмеченных пользователем как ридонли. Какие записи ридонли, а какие нет, - хранится в другой таблице той же базы. (ID записи + булевская переменная blocked)

Вопрос: что из этого будет работать быстрее?

1а. Создать триггер типа instead of update, создать в нем курсор с одним только полем "cursor_id" (ID текущей записи), пробегающий всю inserted или deleted. На каждом шаге он смотрит, заблокирован ли этот ID, если нет - то исполняется команда "delete from main where id=@cursor_id" и "insert into main (select * from inserted where id=@cursor_id".

1б. То же самое, но курсор читает все поля main в переменные (порядка 30 полей), а потом, если запись не заблокирована, апдейтит ее по значениям переменных.

2а. Создать триггер типа instead of update, в нем создать временную таблицу #tmp, хранящую только IDшники записей. Из нее выкидываются заблокированные ID, затем исполняется команда "delete from main where id in #tmp" и "insert into main (select * from inserted where id in #tmp)"

2б. То же самое, но в #tmp хранится не поле ID, а все поля, и апдейт идет из нее, а не из deleted и inserted.

(или еще есть другой способ?)
...
Рейтинг: 0 / 0
22.07.2008, 14:01
    #35444708
Cx4
Cx4
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизировать триггер update, частично блокирующий записи
Вариант 2а.

P.S.
Вместо #tmp, можно использовать @tmp (declare ... table ...).
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Оптимизировать триггер update, частично блокирующий записи / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]