1
表限制是否在同一事务中执行?具有读提交隔离级别和表限制的事务
我有一个Read Committed隔离级别的事务,它在表中插入一些行。该表对它有一个约束,该约束调用一个函数,该函数依次从同一个表中选择一些行。
它看起来像函数在不知道事务的情况下运行,函数中的select返回表中事务之前有的行。
有没有解决办法,还是我缺少什么?谢谢。
这里是交易和约束代码:
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
我不想删除行。我只想让该函数(由检查约束调用)能够查看我在当前事务中插入的行。 – reticent 2009-05-30 06:01:02