PDA

View Full Version : مدیریت در اینزرت داده



sgb110
یک شنبه 08 شهریور 1388, 00:43 صبح
سلام به همه دوستان
یه سوالی داشتم ، اگه ممکن هست راهنمایم کنید

من تو بانکم یه فیلد یونیک دارم موقع اینزرت داده به این جدول بهتر هست خودم قبل از اینزرت چک کنم که داده تکراری نیست یا این کار رو بسپرم به خود sqlserver و خطایی رو که رخ می ده رو مدیریت کنم؟

ممنون می شم راهنماییم کنید

N_D
دوشنبه 09 شهریور 1388, 01:06 صبح
بهتره که با Index این کار رو بکنی و از طریق خطای تولید شده توسط Sql خطا رو مدیریت کنی

m_r_moini
پنج شنبه 26 شهریور 1388, 21:12 عصر
با سلام من هم اين مشكل را دارم . در صورت امكان نمونه كدي براي مديريت اينزرت داده در بانك ارائه كنيد.با تشكر معيني

AminSobati
پنج شنبه 26 شهریور 1388, 22:44 عصر
سلام دوست عزیزم،
این موضوع از دو جنبه قابل بررسیه. یکی از دیدگاه Data Integrity که وقتی شما Unique Index یا Unique Constraint روی فیلد قرار میدین، تضمین میکنید که رکورد از هر طریق وارد بشه (برنامه شما یا هر منبع دیگری) امکان بوجود آمدن مقدار تکراری وجود نداره.
دیدگاه دیگه بحث سرعت هست. وقتی Insert انجام میدین، این رکورد بصورت فیزیکی وارد جدول میشه و بعد Index یا Constraint تکراری بودنش رو چک میکنه. اگر تکراری باشه Error برمیگردونه. اما وقتی خودتون قبلش چک کنید (به شرط داشتن ایندکس مناسب برای سریع بودن جستجو)، این کار سریعتر به نتیجه میرسه. یعنی شما قبل از Insert واقعی متوجه میشین رکورد تکراری هست. این نکته زمانی تفاوتش حائز اهمیت میشه که حجم زیادی از رکورد در زمان کوتاهی Insert بشه. در این حالت روش دوم سریعتر انجام خواهد شد.
نتیجه گیری:
در نرم افزارهای عادی که نرخ ورود اطلاعات نرمال هست، شخصا اعتقادی به چک کردن مقدار تکراری به این شکل ندارم، بلکه وجود همون Constraint و Error Handling روال منطقی تری هست

محمد سلیم آبادی
جمعه 27 شهریور 1388, 15:55 عصر
sgb110 سوالم از شما این است که چگونه می خواهید خودتان قبل از درج این بررسی را انجام دهید؟
با کمک trigger آیا فکر می کنید از پس این کار بر می آیید؟

m_r_moini
شنبه 28 شهریور 1388, 07:49 صبح
دوستان من هم تمايل دارم از طريق Index تكراري بودن را كنترل كنم اما نميدانم كد مربوطه را چطور بنويسم . لطفا راهنمائي كنيد .
با تشكر

sgb110
شنبه 28 شهریور 1388, 20:31 عصر
سلام
ممنون از جواباتون
بله چون تعداد اینزرت ها زیاد بود به این فکر افتادم وگرنه که از همون روش error handling استفاده می کنم

راستش من می خواستم موقع لود فرم تویه یه لیست داده ها رو فتچ کنم بعد چک کنم ببینم تکراری هست یا نه :اشتباه::عصبانی++:
که بنظرم منطقی نیست


با کمک trigger آیا فکر می کنید از پس این کار بر می آیید؟ :متفکر:

در مورد trigger هم راستش خیلی باهاشون کار نکردم فقط در حد یکی دو تا مثال دو کتاب ها و اینترنت
اما اگه لازم باشه ،چرا که نه!
خواستن نوانستنه
در ضمن اگه جایی به مشکلی خوردم دوستای انجمن حتما کمکم می کنند