ورود

View Full Version : آپدیت و درج اطلاعات مرتبط به صورت همزمان



majid1605
پنج شنبه 02 آبان 1392, 23:55 عصر
سلام
من تووی جدوال می خوام چند جدول رو همزمان آپدیت یا اطلاعات در اون درج کنم.
فرض کنید یک جدول مربوط به مطالب و یک جدول دیگه که از ای دی همون مطلب استفاده می کنه داشته باشیم .چطور این مطالب رو در این دو جدول بروزرسانی یا درج کنم .
البته تعداد بیشتر از دوتا ست ولی یه مثال برای همین دوتا بگید بقیه مشکل حله.
بهترین گزینه به نظرتون چیه؟
کوئری های جداگانه
Transaction
یه پیشنهادی که بهم شد view
که سومی رو دقیقا متوجه نمیشم طریق ساخت view رو بلدم ولی اینکه چطور چندتا جدول رو همزمان آپدیت یا با هم عملیات درج انجام بدم رو بلد نیستم .

espootin
جمعه 03 آبان 1392, 11:30 صبح
با سلام.
دو مثال برای شما گذاشتم. جدول های سمت چپ از نوع reference‌ می باشند.

شکل ۱:
112204

شکل۲:
112203

برای درج:
از نظر من شما باید از Insert‌ های جداگانه استفاده کنید، بدین صورت که از جدول مرجع شروع کنید و سپس در جدول هایی که دارای کلید خارجی از جدول مرجع می باشند درج را انجام دهید.
نکته : در صورتی که احتمال خطا وجود دارد و ممکن است عملیات درج ناقص انجام شود، شما می بایست از Transaction استفاده کنید و Rollback بزنید.
شکل ۱ : ابتدا tblIdentity و سپس tblPhones.
شکل ۲ : ابتدا tblState ، سپس مقدار ID را برای درج در tblCity بدست آورید و درج را انجام دهید.

برای بروز رسانی:
حالت اول : آپدیت تمامی فیلد ها بجز فیلد هایی که به عنوان کلید خارجی تعیین شده است، بروز رسانی برای این فیلد ها به صورت معمول می باشد و خطایی بوجود نمی آید.
حالت دوم : آپدیت فیلد هایی که بعنوان کلید خارجی استفاده شده اند، در صورت آپدیت با خطا مواجه می شوید بنابراین باید استراتژی آن(Referential Integrity) را تعیین کنید که شامل چهار مورد می باشد. در صورتی که از آبشاری یا Cascade استفاده کنید در صورت آپدیت کلید خارجی ، آپدیت روی سایر جدول ها نیز اعمال خواهد شد.

بنابراین در صورتی که Cascade را انتخاب کنید و IdentityCode را آپدیت کنید ، CoIdentity نیز آپدیت خواهد شد.

* در صورت امکان از Stored Procedure برای درج و آپدیت استفاده کنید.

موفق باشید