PDA

View Full Version : گرفتن یک رکورد از جدول توسط یک کاربر



AmirAlimadadi
شنبه 11 مهر 1388, 09:45 صبح
با سلام
چه طور می شه یه رکورد از جدول رو برای یه کاربر قفل کرد، یعنی اگه باقی کاربران رفتن روی اون رکورد متوجه بشن که این رکورد دست کس دیگه ای هست، آیا در SQL این امکان برای رکورد ها وجود داره.

Asad.Safari
شنبه 11 مهر 1388, 10:26 صبح
در SQL همچین امکانی وجود نداره ... معمولا در این مواقع به صورت دستی از Time stamp استفاده میشه

فکر کنم شما میخایید جلوی Concurrency رو بگیرید ؟

AmirAlimadadi
شنبه 11 مهر 1388, 16:20 عصر
در SQL همچین امکانی وجود نداره ... معمولا در این مواقع به صورت دستی از Time stamp استفاده میشه

فکر کنم شما میخایید جلوی Concurrency رو بگیرید ؟

این Time stamp چی هست، ببینید من می خوام از دسترسی همزمان جلوگیری کنم. حالا اگه نظر بهتری دارین، من استقبال می کنم، اما اگه بشه برای هر رکورد مثلا یه تگ داشت که فقط توسط یه نفر اون ست بشه و اگه بازم خواستیم به اون دسترسی داشه باشیم، اون تگ رو بررسی کنیم، خیلی خوب می شه، اینم بگم که خودم توی برنامه از دسترسی های غیر مجاز به رکوردها جلوگیری می کنم، یعنی لازم نیست پایگاه داده این کار رو بکنه

A.Shafiee
شنبه 11 مهر 1388, 16:54 عصر
شما می تونید از Triger استفاده کنید

Asad.Safari
شنبه 11 مهر 1388, 18:04 عصر
ببینید , برای استفاده از Time stamp شما باید یه فیلد از نوع Timestamp برای جدولت درست کنی .

در هنگام واکشی رکورد , شما Time که تو فیلد Time stamp اتون است رو نگه میداری و هنگامی که جدولت میخاد Update بشه اون رو با اونی که در رکودتون است چک می کنید اگر برابر باشه رکورد آپدیت میشه

مثل مثال زیر :



Update Table1 set icol='ifield' where (id=1 and iConcurrentStamp=myRetrivedTime)


موفق باشید

AmirAlimadadi
یک شنبه 12 مهر 1388, 09:14 صبح
ممنون از راهنماییتون، ولی SQL چیزی شبیه به یه flag یا هر چیزی شبیه به اون، برای هر رکورد نداره که بتونیم با اون کار کنیم.

Asad.Safari
یک شنبه 12 مهر 1388, 10:01 صبح
می دونید Time Stamp زمان آخرین تغییرات بر روی هر رکورد رو نگه میداره که فکر کنم این بهترین Flag می باشد.

AmirAlimadadi
دوشنبه 13 مهر 1388, 09:12 صبح
می دونید Time Stamp زمان آخرین تغییرات بر روی هر رکورد رو نگه میداره که فکر کنم این بهترین Flag می باشد.

ممنون از راهنمایی شما، اما من برای هر جدول از پایگاه داده ام این فیلد رو می خوام، یعنی باید برای هر جدول یه ستون اضافه کنم؟؟؟ خود SQL برای هر سطر یه فیلد یا flag یا ... نداره؟؟؟