PDA

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



majid1605
جمعه 03 آبان 1392, 01:13 صبح
سلام
من تووی جدوال می خوام چند جدول رو همزمان آپدیت یا اطلاعات در اون درج کنم.
فرض کنید یک جدول مربوط به مطالب و یک جدول دیگه که از ای دی همون مطلب استفاده می کنه داشته باشیم و یا کلا چندتا جدول که بعضی از اطلاعات رو از همدیگه می گیرند چطور این مطالب رو در این دو جدول بروزرسانی یا درج کنم .

بهترین گزینه به نظرتون چیه؟
کوئری های جداگانه
Transaction
یه پیشنهادی که بهم شد view
که سومی رو دقیقا متوجه نمیشم طریق ساخت view رو بلدم ولی اینکه چطور چندتا جدول رو همزمان آپدیت یا با هم عملیات درج انجام بدم رو بلد نیستم .

sohail0098
جمعه 03 آبان 1392, 03:10 صبح
سلام
اونجوری که من میدونم View تنها برای نمایش اطلاعاته و قابلیت درج توش نیست
شما بهتره که یه جدول برای مظالبتون ایجاد کنید که یه فیلد آی دی داشته باشه که آتو اینکریز هست
اگه تو جدول دیگه ای خواستی از مطالب استفاده کنی باید به جاش آی دیه این مطلب رو درج کنی
تا اونجایی که میدونم توی مای اس کیو ال روی ریلیشن های پرایمری کی و فارن کی کانستریت نداریم
پس باید با یه کویری آی دی مطلب رو در بیاری بعد برای اینکه ارتباط درست باشه از این آی دی توی Where جدول دیگت استفاده کن
بعد از اون که با این ور آی دیه این یکی جدولتو بدست اوردی حالا آپدیتش کن

shahriyar3
جمعه 03 آبان 1392, 20:06 عصر
trigger جواب کار شما رو میده .
یک trigger ایجاد کنید با event on update

majid1605
شنبه 04 آبان 1392, 23:24 عصر
به جزء trigger راه دیگه وجود داره.
جهت توضیح بیشتر :
فرض کنید سه تا جدول وجود داره :1-مطالب2-مجموعه3-تگ
فرض بر اینه که مجموعه در صورت وجود نداشتن توسط کاربر ایجاد میشه.
هر کاربر که مطلبی ارسال می کنه توی این سه تا جدول نوشته میشن این فقط یه مثال که بگم قرار با ارسال یه فرم تووی سه تا جدول بنویسیم .
بدیهیه که دوتا جدول دیگه از id مطالب جدول مطلب استفاده می کنند .حالا چطور میشه اینکار رو انجام داد؟

shahriyar3
شنبه 04 آبان 1392, 23:56 عصر
به جزء trigger راه دیگه وجود داره.
جهت توضیح بیشتر :
فرض کنید سه تا جدول وجود داره :1-مطالب2-مجموعه3-تگ
فرض بر اینه که مجموعه در صورت وجود نداشتن توسط کاربر ایجاد میشه.
هر کاربر که مطلبی ارسال می کنه توی این سه تا جدول نوشته میشن این فقط یه مثال که بگم قرار با ارسال یه فرم تووی سه تا جدول بنویسیم .
بدیهیه که دوتا جدول دیگه از id مطالب جدول مطلب استفاده می کنند .حالا چطور میشه اینکار رو انجام داد؟
trigger اصلا ساخته شده برای همین کار دیگه
اصلا شما بگو 100 تا جدول چه فرقی میکنه؟
یک event تعریف میکنی مثلا AFTER INSERT این کوئری ها اجرا بشن
این EVENT میتونه ثبت نام یک کاربر باشه . به محض اینکه ثبت نام کرد کاربر چند تا عملیات دیگه هم توی چند تا تیبل دیگه انجام بشه
وقتی trigger تعریف میکنی بقیه کوئری هائی که باید اجرا بشن و وسطش قرار میدی به ترتیب اجرا میشن میرن جلو
از transaction هم میتونی استفاده کنی
میتونی multi query هم انجام بدی ولی باید دستی خودت بنویسیشون
شاید راه های دیگه هم باشه من الان به ذهنم نرسه ولی منطقی ترین روش برای این کار همون trigeer هست