PDA

View Full Version : درج در بین رکورد های یک جدول



mansoor_csharp
جمعه 29 اردیبهشت 1385, 11:00 صبح
سلام
دو تا table داریم که یکی master و دیگری detail می باشددر جدول master مثلاً 100 تا رکورد وارد می کنیم که شماره هاشو ن پشت سر هم می باشد حال می خواهیم یک رکورد جدید وارد نماییم که مثلاً شماره اش باید 5 باشد در حالیکه شماره 5 قبلاً درج شده است و باید شماره 5 قبلی به 6 تبدل شود و 5 جدید درج شود و همچنین امکان دارد در یک زمان چند کاربر مختلف بخواهد با این جدول کار کند . به نظر شما چگونه باید کار کرد؟

mhd78
یک شنبه 07 خرداد 1385, 06:47 صبح
شما برای انجام چنین کاری مجبور هستید همیشه فیلد شماره ای را update کنید

hpx
یک شنبه 07 خرداد 1385, 07:38 صبح
یه فیلد identity تو جدول master بگیر و اون فیلد عددی را به عنوان یه فیلد معمولی بگیر منظور اینه که pk نباشه
pk همون identity باشه انطوری رابطه master-detail هیچ تغییری نمیکنه و فقط اون فیلد عددی تو master
update میشه

h_baqery
یک شنبه 07 خرداد 1385, 09:52 صبح
برای اینکه تغییرات عینا در detail هم اعمال شوند باید در قسمت relation بین دو جدول تیک cascade update رو بزنید و برای insert هم خیلی ساده است فقط باید ببینی اگر رکورد وجود داره ، رکوردهای بعدی رو با یک جمع کنی ، نگران کار هم زمان هم نباش sql خودش به ترتیب انجام می ده ، اگه متوجه نشدی بگو برات یک پروسیجر برای insert می زارم و اون تیک رو هم اگر پیدا نکردی بگو از چه نسخه ای از sql استفاده می کنی تا جزییاتشو بهت بگم.

AminSobati
سه شنبه 09 خرداد 1385, 13:27 عصر
سلام
دو تا table داریم که یکی master و دیگری detail می باشددر جدول master مثلاً 100 تا رکورد وارد می کنیم که شماره هاشو ن پشت سر هم می باشد حال می خواهیم یک رکورد جدید وارد نماییم که مثلاً شماره اش باید 5 باشد در حالیکه شماره 5 قبلاً درج شده است و باید شماره 5 قبلی به 6 تبدل شود و 5 جدید درج شود و همچنین امکان دارد در یک زمان چند کاربر مختلف بخواهد با این جدول کار کند . به نظر شما چگونه باید کار کرد؟
دوست عزیزم،
چرا وقتی 5 مجددا وارد میشه باید 5 قبلی بشه 6؟ جدول باید از ورود 5 تکراری جلوگیری کنه. تصور کنید 5 فعلی چندین Child داشته باشه. برای حفظ این رابطه، وقتی 5 به 6 تبدیل میشه، تمام Childها هم باید تغییر کنند. اساسا این عمل نادرسته. درضمن وقتی 5 به 6 تبدیل میشه، شاید 6 هم از قبل باشه!
لذا شما میتونین از فیلد Identity استفاده کنید که به صورت اتوماتیک عدد جدید تولید کنه و کار چند کاربر به طور همزمان هم باعث تولید عدد تکراری نمیشه.

Omid Rekabsaz
سه شنبه 09 خرداد 1385, 18:02 عصر
موردی که hpx گفتند کاملا صحیح است... با یک طراحی صحیح تمامی ایم موارد پوشش داده می شود... در ضمن همانطور که آقای ثباتی گقتند استفاده از Cascade update در رابطه بین دو جدول حتی المقدور نباید انجام شود...
در صورتی که در ابتدای تولید این نرم افزار هستید در طراحی تجدید نظر کنید...