О Транзакциях

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
bop
Сообщения: 2
Зарегистрирован: 04 фев 2005, 13:49

О Транзакциях

Сообщение bop » 04 фев 2005, 14:26

Скажите пожалуйста с каким уровнем изоляции должна быть транзакция что бы она не видила свои вставки/изменения
Ситуация сл. в таб1 идет вставка данных в результате которой сраб. триггер и делает изменения в таб2 в которой также выпю триг. и запускает процедуру которая должна просчитать количество в табл.1 до вставки породившей данную транзакцию (другими словами расчитать остаток на дату и время вставки).
Использую сл. параметры тр.
write
read_commit
rec_version
nowait (При этих параметрах у меня видятся вносимые данные, а этого мне не надо)

Если использовать Snapshot то боюсь что в результате работы процедуры будут бл. остальные пользователи т.к. происходит чтение и запись в теже таблицы.
Что посоветуете.

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Re: О Транзакциях

Сообщение Merlin » 04 фев 2005, 14:54

bop писал(а):Скажите пожалуйста с каким уровнем изоляции должна быть транзакция что бы она не видила свои вставки/изменения
Ни с каким.
bop писал(а): Ситуация сл. в таб1 идет вставка данных в результате которой сраб. триггер и делает изменения в таб2 в которой также выпю триг. и запускает процедуру которая должна просчитать количество в табл.1 до вставки породившей данную транзакцию (другими словами расчитать остаток на дату и время вставки).
Наводка нумер раз: триггеры бывают не только after, но и before. То иссь, если модификацию tabl2 выполнять в before триггере tabl1, то триггер tabl2 как раз и соберёт остаток до вставки.

Наводка нумер два: если before триггер tabl2 будет делать new.ostatok_do=old.ostatok_posle, то не надо будет шариться по tabl1 ваще.

bop
Сообщения: 2
Зарегистрирован: 04 фев 2005, 13:49

Re: О Транзакциях

Сообщение bop » 04 фев 2005, 15:18

Наводка нумер раз: триггеры бывают не только after, но и before. То иссь, если модификацию tabl2 выполнять в before триггере tabl1, то триггер tabl2 как раз и соберёт остаток до вставки.
Спасибо помогло в таб1 тригер был на Afte
Наводка нумер два: если before триггер tabl2 будет делать new.ostatok_do=old.ostatok_posle, то не надо будет шариться по tabl1 ваще.

Неподойдет т.к. нужновычислять на дату, а не последний имеемый.

Ответить