ALTER PROCEDURE [dbo].[TodayToYesterday]
AS
BEGIN
--想到这里加个排它锁
Update Users Set InYesterday = InToday, DiffYesterday = DiffToday, OutYesterday = OutToday
Update Users Set InToday = 0, DiffToday = 0, OutToday = 0
Delete From InIP
Delete From OutIP
--执行完了解锁
END
AS
BEGIN
--想到这里加个排它锁
Update Users Set InYesterday = InToday, DiffYesterday = DiffToday, OutYesterday = OutToday
Update Users Set InToday = 0, DiffToday = 0, OutToday = 0
Delete From InIP
Delete From OutIP
--执行完了解锁
END
AS
BEGIN
--想到这里加个排它锁
--如果在這個位置加了排他鎖 那么你下面的update不是也就不能更新了嗎?
--而且 Update本身也是會排他鎖的,這個是SQL的機制,如果你想防止藏讀 ,我想可以用一個事務來做吧
--期待高手具體解答
--begin tran
Update Users Set InYesterday = InToday, DiffYesterday = DiffToday, OutYesterday = OutToday
Update Users Set InToday = 0, DiffToday = 0, OutToday = 0
Delete From InIP
Delete From OutIP
--执行完了解锁
--commit tran
END
AS
BEGIN
set xact_abort on
begin tran
Update Users Set InYesterday = InToday, DiffYesterday = DiffToday, OutYesterday = OutToday
Update Users Set InToday = 0, DiffToday = 0, OutToday = 0
Delete From InIP
Delete From OutIP
if @@error =0
commit
else
rollback
END