حذف کامل یک رکورد در جدول ریلیشن شده
جدولی که به خودش ریلیشن شده آیا کویری هست بشه آیتمی را از آن جدول کامل جذف کرد با دستور Delete این کار انجام نشد؟به عنوان مثال یک جدول داریم که منو ها در آن ثبت میشه و در همین جدول یک ستون داریم به اسم parent که مقدارشو از آیدنتیتی همین ستون می گیره درواقع ریلیشن شده به خودش اگر مقدار Id جدول را داشته میشه زیر منو آن آی دی میشه اگر null بود میشه منو اصلی.فکر می کنم سوالم واضع باشه
متاسفانه نتونستم تصویر قرار بدم
پاسخ هوش مصنوعی
برای حذف یک رکورد از جدول که به خودش ریلیشن شده است، ابتدا باید مطمین شوید که هیچ رکورد وابسته ای به آن رکورد وجود ندارد. در واقع، اگر یک رکورد دارای ساب منوها باشد، ابتدا باید آن ساب منوها را حذف کنید و سپس رکورد اصلی را حذف کنید.
شما می توانید از یک کویری مشابه زیر استفاده کنید:
-- فرض بر این است که 'your_table' نام جدول و 'id' نام ستون ID است.
-- ابتدا ساب منوها را حذف کنید
DELETE FROM your_table WHERE parent = :id_to_delete;
-- سپس رکورد اصلی را حذف کنید
DELETE FROM your_table WHERE id = :id_to_delete;
در اینجا `:id_to_delete` باید با مقدار ID رکوردی که می خواهید حذف کنید، جایگزین شود. با اجرای اولین دستور، تمام ساب منوهای مربوط به آن رکورد حذف خواهند شد و با اجرای دومین دستور، رکورد اصلی نیز حذف خواهد شد.
توضیحاتتون خیلی کمه
بهتر بود کدهاتون رو هم قرار می دادید یا از جدولتون عکسی میذاشتید. منظورتون از جدولی که به خودش ریلیشن شده چی هست دقیقا؟
لطفا سوالتون رو ویرایش کنید و توضیحات کامل تری رو ارائه بدید براش
آیا ستون Parent به صورت یک کلید خارجی ثبت شده؟
اگر یک کلید خارجی هست خب مطمنا ممکنه نشه اطلاعات رو حذف کرد. دلیل هم واضحه. اون ردیفی که شما قصد دارید حذفش کنید یک کلید اصلی داره که این کلید احتمالا در جایی به عنوان کلید خارجی استفاده شده. و اگر این ردیف رو حذف کنید یکپارچگی دیتابیس از بین میره. یعنی بعد از حذف شما دارای یک کلید خارجی میشید که کلید اصلیش حذف شده و این توی دیتابیس امکان پذیر نیست.
شما یا باید ستونی که کلید خارجی هست رو به صورت ساده تعریف کنید نه کلید خارجی یا اینکه کلید های خارجی که تعریف می کنید از نوعی تعریف کنید که بتونه مقدار null هم بپذیره. (این لینک رو ببینید)
ممنون از پاسختون در سوال کامل مطرح کردم به هیچ جدول دیگری ریلیشن نشده به خود جدول ریلیشن شده و مفدار null هم می گیره در واقع اگر parent مقدار null باشه منو اصلی است ولی اگر مقدار Identity جدول رو بگیر مثلا 1 میشه زیرمنو منویی که آی دی 1 داره .
اگه قصدت اینه ک اطلاعات رو توی فرم نمایش ندی میتونی از حذف منطقی استفاده کنی - یعنی یه پروپرتی به جدولت اضافه کن مثلا به نام delete . اگه مقدار delete برابر true بود ک اونوخت اطلاعات رو توی فرم نمایش نده - با این روش دگ نیازی نیست رکوردی که شامل ی کلید خارجی هست رو حذف کنی -
ممنون آقا حسین عزیز این مورد رو پیاده سازی کردم می خواستم ببینم راهکاری هست برای حذف کامل یا خیر
با توجه به توضیحات شما متوجه شدم که فیلد ID یونیک نیست.
بهترین راه اینه که برای هر رکورد یک فیلد یونیک بزارید.
- آموزش استفاده از پلاگین گردونه شانس در Asp.net core به همراه سورس
- نمایش متن به صورت فرمت شده در CkEditor
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- کار با CkEditor با قابلیت آپلود عکس
- خطا در ایجاد migration در Asp.net core
- تفاوت های Asp.net core و Asp.net mvc چیه؟
- دلیل اسپم شدن ایمیل های ارسالی از سرور
- نحوه لایه بندی پروژه Core و اضافه کردن به IIS
- ارسال ایمیل در Asp.net core
- آیا میشه در mvc core از کامپونت استفاده کرد
- آپلود فایل در Asp.net core چگونه است؟
- اشکال در آپلود فایل ویدیو در mvc core 2
- ارسال ایمیل و خبرنامه در Asp.net core چگونه است؟