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