حل شده

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

بازدید612پست ها1آخرین فعالیت11 ماه پیش
2
1

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

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

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 11 ماه پیش
DELETE FROM device WHERE id='1'; UPDATE device set DeviceName='ok' WHERE id='1'; – cnmeysam 11 ماه پیش
حتی دیتابیس با کوئری شما هم ساختم باز هم عملیات حذف درست کار میکنه ولی عملیات آپدیت نه یعنی حذف نمیشه ولی آپدیت میشه – cnmeysam 11 ماه پیش
در ضمن من مشکلم آپدیت نشدن آی دی نیست میخوام Name رو نشه ویرایش کرد دستور RESTRICT فقط روی فارنکی و آی دی اعمال میشه میخوام توی تیبل پرنت هیچ کدوم از فیلد ها ویراش نشه در صورت استفاده توی فرم دیگه – cnmeysam 11 ماه پیش
ببینید شما وقتی کی تعریف میکنی برای اپدیت و دیلیت مثلا برای ادیدی توی چایلد، اپدیت شدن همون رو محدود میکنید نه کل فیلد های والد رو. نمیتونید از اپدیت شدن فیلدهای والد جلوگیری کنید. چرا با برنامه نویسی انجام نمیدید؟ – کیوان هستم 11 ماه پیش

سوال برنامه نویسی دارید؟

هیچ وقت در پرسیدن سوال شک نکنید

خوش آمدید

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