Табличные ограничения выполняются в одной и той же транзакции?
У меня есть транзакция с уровнем изоляции Read Committed, которая вставляет несколько строк в таблицу. Таблица имеет ограничение, вызывающее функцию, которая, в свою очередь, выбирает несколько строк из одной таблицы.
Похоже, что функция выполняется, ничего не зная о транзакции, и выбор в функции возвращает строки в таблице, которые были до транзакции.
Есть ли обходной путь или я что-то упустил? Спасибо.
Вот коды для транзакции и ограничения:
insert into Treasury.DariaftPardakhtDarkhastFaktor
(DarkhastFaktor, DariaftPardakht, Mablagh, CodeVazeiat,
ZamaneTakhsiseFaktor, MarkazPakhsh, ShomarehFaktor, User)
values
(@DarkhastFaktor, @DariaftPardakht, @Mablagh, @CodeVazeiat,
@ZamaneTakhsiseFaktor, @MarkazPakhsh, @ShomarehFaktor, @User);
constraint expression (enforce for inserts and updates):
([Treasury].[ufnCheckDarkhastFaktorMablaghConstraint]([DarkhastFaktor])=(1))
ufnCheckDarkhastFaktorMablaghConstraint:
returns bit
as
begin
declare @SumMablagh float
declare @Mablagh float
select @SumMablagh = isnull(sum(Mablagh), 0)
from Treasury.DariaftPardakhtDarkhastFaktor
where DarkhastFaktor= @DarkhastFaktor
select @Mablagh = isnull(MablaghKhalesFaktor, 0)
from Sales.DarkhastFaktor
where DarkhastFaktor= @DarkhastFaktor
if @Mablagh - @SumMablagh < -1
return 0
return 1
end