after trigger и changes visibility
3 отговора
357 прегледа
after trigger и changes visibility
имам after insert trigger на таблица, тригерът изпълнява външна команда, на която дава параметър - id-то на съответния запис.
проблемът е, че искам външната команда да има достъп до данните от insert-a, но тъй като явно данните стоят във "вътрешна транзакция" и не са видими за connection-ите към базата извън текущия тригер (поне докато не завършат всички тригери).
има ли някакво решение този проблем? не говоря за заобикаляне, а за решение.
в случая базата е postgresql, но проблемът е аналогичен и за другите СУБД :-)
проблемът е, че искам външната команда да има достъп до данните от insert-a, но тъй като явно данните стоят във "вътрешна транзакция" и не са видими за connection-ите към базата извън текущия тригер (поне докато не завършат всички тригери).
има ли някакво решение този проблем? не говоря за заобикаляне, а за решение.
в случая базата е postgresql, но проблемът е аналогичен и за другите СУБД :-)
Re: after trigger и changes visibility
Предполагам, си прочел какво пише в документацията?
Everything louder than everything else...
Everything louder than everything else...
Re: after trigger и changes visibility
нормално е да не ги вижда, ако външната програма прави SELECT на данните
подавай ги дирекно на външната програма (както подаваш ID-то)
при някои бази може да стане със transaction isolation level Read uncommitted, но може и да не стане :-) при postgresql - няма да стане ([линк])
между другото ако го правиш със select то ще е доста бавно, дори да стане ....
подавай ги дирекно на външната програма (както подаваш ID-то)
при някои бази може да стане със transaction isolation level Read uncommitted, но може и да не стане :-) при postgresql - няма да стане ([линк])
между другото ако го правиш със select то ще е доста бавно, дори да стане ....
Re: after trigger и changes visibility
Без да се съмнявам в удачността на подобен дизайн (може да е extended stored proc) обръщам внимание на sp_getbindtoken и sp_bindsession в MSSQL. Не е ясно дали ще виждаш inserted/deleted но със сигурност ще share-ваш lock space-а. Проблем може да е, че така bind-нати connection-ите сериализират работата си.
cheers,
</wqw>
cheers,
</wqw>