meisam1366
پنج شنبه 05 خرداد 1390, 14:23 عصر
سلام دوستان!
یک سوال در مورد استفاده همزمان چند کاربر از StoredProcedure دارم.
کد زیر ر نگاه کنید:
CREATE Procedure [dbo].[sp_Accounts_UpdateStatuse]
@Count int,
@Statuse int,
@NewStatuse int
As
Begin
Declare @tip Table(ids int)
Insert into @tip
Select Top(@Count)
[ID]
From Accounts
Where
[Statuse] = @Statuse
if (Select COUNT(ids) from @tip) = @Count
Begin
Update Accounts
Set [Statuse] = @NewStatuse
Where [ID] in (select ids From @tip)
Select * From @tip
End
else
Begin
return 0
End
End
این SP میآید تعداد مشخصی از اکانتهایی رو که وضعیتشون قابل واگذلری هست رو بر میداره، بعد وضعیت این اکانتها رو در وضعیت غیر قابل واگذاری قرار داده و آی دی اکانتها رو برمیگردنه.
اگر این برنامه در یک سیستم تک کاربره اجرا بشه مشکلی به وجود نمیآد.
حال در یک سیستم چند کاربره مثل یک سایت، چطوری میشه کاری کرد که id هایی که تو جدول @tip هستند، تا زمانی که وضعیت اکانتشون به وضعیت غیر قابل دسترسی تغییر نکرده، کاربر دیگه ای نتونه به جدول اکانتها دسترسی داشته باشه و اکانتهایی که هنوز وضیتشون تغییر نکرده رو نتونه انتخاب کنه.
.......
یک سوال در مورد استفاده همزمان چند کاربر از StoredProcedure دارم.
کد زیر ر نگاه کنید:
CREATE Procedure [dbo].[sp_Accounts_UpdateStatuse]
@Count int,
@Statuse int,
@NewStatuse int
As
Begin
Declare @tip Table(ids int)
Insert into @tip
Select Top(@Count)
[ID]
From Accounts
Where
[Statuse] = @Statuse
if (Select COUNT(ids) from @tip) = @Count
Begin
Update Accounts
Set [Statuse] = @NewStatuse
Where [ID] in (select ids From @tip)
Select * From @tip
End
else
Begin
return 0
End
End
این SP میآید تعداد مشخصی از اکانتهایی رو که وضعیتشون قابل واگذلری هست رو بر میداره، بعد وضعیت این اکانتها رو در وضعیت غیر قابل واگذاری قرار داده و آی دی اکانتها رو برمیگردنه.
اگر این برنامه در یک سیستم تک کاربره اجرا بشه مشکلی به وجود نمیآد.
حال در یک سیستم چند کاربره مثل یک سایت، چطوری میشه کاری کرد که id هایی که تو جدول @tip هستند، تا زمانی که وضعیت اکانتشون به وضعیت غیر قابل دسترسی تغییر نکرده، کاربر دیگه ای نتونه به جدول اکانتها دسترسی داشته باشه و اکانتهایی که هنوز وضیتشون تغییر نکرده رو نتونه انتخاب کنه.
.......