حل شده

آپدیت یک سطر در تیبلی که relationship دارد

بازدید428پست ها1آخرین فعالیت5 ماه پیش
1
1

سلام
یه سوال داشتم
من یه دیتابیس دارم که بین 2تا تیبل ریلیشن شیپ برقراره وقتی توی تیبل اول یه دیتایی ثبت کنم و به واسطه ریلیشن توی تیبل دوم دیتا ثبت میکنم آی دی تیبل اول توی تیبل دو ثبت میشه و وقتی بخوام توی تیبل اول دیتا رو حذف کنم پیام میده که اجازه حذف به دلیل استفاده آی دی در تیبل دوم وجود نداره
سوال من اینجاست چطوری میتونم کاری کنم که اون سطر از تیبل اول که در تیبل دوم استفاده شده نه تنها حذف نشه بلکه آپدیت هم نشه ؟
یعنی وقتی دستور آپدیت رو میزنم هم باز بگه چون استفاده شده اجازه ویرایش هم نداری!

آخرین ویرایش: 12-05-2020 ساعت 02:02، توسط cnmeysam
سلام. خوب در اینصورت چرا اصلا ریلیشن تعریف کردید؟ – کیوان هستم 5 ماه پیش
پس باید چیکار میکردم؟ میخوام هم آی دی سطر مورد نظرم توی تیبل دوم ثبت بشه هم بعد از استفاده توی تیبل دوم حذف و ویرایش نشه ولی اگه توی تیبل دوم استفاده نشد هم حذف بشه هم ویرایش ممکنه سطر تیبل اولم توی چند تیبل فراخوانی و استفاده شده باشه باید چیکار کنم پس؟ – cnmeysam 5 ماه پیش

1 پاسخ

1

سلام.
پس تیبل اول تیبل مرجع هست و تیبل دوم چایلد که رفرنس براش تعریف میشه و شما میخواین وقتی آیدی توی تیبل دوم هست مقدار ش در تیبل اول غیر قابل تغییر باشه. برای اینکار میتونید از RESTRICT استفاده کنید برای تعریف رفرنس

CREATE TABLE child ( id INT, parent_id INT, INDEX par_ind (parent_id), FOREIGN KEY (parent_id) REFERENCES parent(id) ON UPDATE RESTRICT ON DELETE RESTRICT )
ممنون ازجوابتون مشکل همینجاستمن 2 تا تیبل دارم یکی device و یکی deviceconsumption توی deviceconsumption ریلیشن آپدیت و دیلت ریستریک هست . دیلت انجام نمیشه که درسته ولی آپدیت انجام میشه که اشتباهه توی عکس ببینید لطفاhttp://uupload.ir/files/vygt_4.jpg – cnmeysam 5 ماه پیش
DELETE FROM device WHERE id='1'; UPDATE device set DeviceName='ok' WHERE id='1'; – cnmeysam 5 ماه پیش
حتی دیتابیس با کوئری شما هم ساختم باز هم عملیات حذف درست کار میکنه ولی عملیات آپدیت نه یعنی حذف نمیشه ولی آپدیت میشه – cnmeysam 5 ماه پیش
در ضمن من مشکلم آپدیت نشدن آی دی نیست میخوام Name رو نشه ویرایش کرد دستور RESTRICT فقط روی فارنکی و آی دی اعمال میشه میخوام توی تیبل پرنت هیچ کدوم از فیلد ها ویراش نشه در صورت استفاده توی فرم دیگه – cnmeysam 5 ماه پیش
ببینید شما وقتی کی تعریف میکنی برای اپدیت و دیلیت مثلا برای ادیدی توی چایلد، اپدیت شدن همون رو محدود میکنید نه کل فیلد های والد رو. نمیتونید از اپدیت شدن فیلدهای والد جلوگیری کنید. چرا با برنامه نویسی انجام نمیدید؟ – کیوان هستم 5 ماه پیش

خوش آمدید

برای طرح سوال، ایجاد بحث و فعالیت در سایت نیاز است ابتدا وارد حساب کاربری خود شوید. در صورتی که هنوز عضو سایت نیستید میتوانید در عرض تنها چند ثانیه ثبت نام کنید.