با سلام خدمت تمام دوستان و استاد عزیزم
همه میتونن به این سوال جواب بدن و راحت باشید
من انگاری در درست کردن جدول comments یک خط کد یادم رفته بود بنویسم اونم این بود که user_id رو مشخص نکرده بودم که به id جدول users ربط داره.
و توی جداول هم میبینید که user_id جدول کامنت به id جدول user وصل نشده. من کد زیر رو اجرا کردم و اجرا نشد و میگه نمیشه update اش کرد.
ALTER TABLE comments ADD FOREIGN KEY (`user_id`) REFERENCES users(`id`);
رفتم سرچ کردم از استک و w3 که کد های مشابهی داشتن ولی منظورشون رو از fk متوجه نشدم. کدهاشون به این صورت بود:
ALTER TABLE Orders
ADD CONSTRAINT FK_PersonOrder
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);
سوالم این بود که FK_PersonOrder چیه جداول ما هستش؟
سلام دوست عزیز ،
هر فیلد جدولی رو میخوای کلید خارجی بسازی . وارد جدول شو از بالا گزینه structure و relation view رو انتخاب کن و کلید رو بساز و ok کن.
اینم مفهومه constraints
سلام خیلی ممنونم زحمت کشیدید
اینایی که توضیح دادین رو بلدم و تحقیق کردم در موردشون. من میخام یدونه متود ایجاد بکنم که تمام کلید ها را اونجا بررسی بکنم و اضافه بکنم. بخاطر اون هم سوالم رو اینطوری پرسیدم.
اگر sql اون رو میدونید لطفا بگین، خیلی ممنون میشم(البته من اون بالا نوشتم sql اش رو فقط اون fk نمیدونم چیه
ALTER TABLE `comments` ADD CONSTRAINT `comments_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
شکل صحیح اون رو میتونید بالا ببینید ولی چرا مثلا اینجا `comments_ibfk_1` مقدارش هست؟
و جالب اش اینجاست که کد بالا هم اجرا نمیشه. و ارور پایین رو به من نشون میده.
SQL query:
ALTER TABLE `comments` ADD CONSTRAINT `comments_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
MySQL said:
#1452 - Cannot add or update a child row: a foreign key constraint fails (`blog`.`#sql-cc8_ce`, CONSTRAINT `comments_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE)
خیلی ممنون
سلام
روزتون بخیر
من الان از سایت w3 نگاه کردم به طور کلی این طوری این مثلا رو توضیح داد دو تا جدول داریم به اسم Person و Order جدول Person یک سری مقادیر میگیره بعد یکی فیلد داره به اسم Person_id که این کلید خارجی یا همون Forign key تو جدول Order هست ولی تو جدول Person کلید اصلی و با این فیلد هست که میشه مقادیر جدول Person رو تو جدول Order تغییر داد دلیلشم این طوره که (محدودیت کلید خارجی از قرار دادن داده های نامعتبر در ستون کلید خارجی جلوگیری می کند ، زیرا باید یکی از مقادیر موجود در جدول والد باشد.) یعنی این که کلید خارجی اجازه نمیده مقادیر نامعتبر که تو جدول والد(یعنی Person) رو اضافه کنی به جدول فرزند مثل این میمونه یک دانشجو میاد دانشگاه بهش یک شماره دانشجویی میدن دیگه تو جدول دانشجو و این شماره دانشجویی یک id هست که کلید خارجی هست حالا اون دانشجو هر امکانات بخواد استفاده کنه با استفاده از اون شماره دانشجویی میتونه مثلا بخواد خوابگاه ثبت نام کنه اون شماره دانشجوییش میشه کلید خارجی تو اون جدول مربوط به خوابگاه و اگه مقدار نامربوط باشه خطا میده امیدوارم درست منظورمو رسونده باشم
موفق باشید
ALTER TABLE Orders ADD CONSTRAINT FK_PersonOrder FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);
سلام خیلی ممنون
من این خط کد رو اضافه کردم ولی هیچ نتیجه ای نمیگیرم و ارور میده بهم.
ارور رو هم بالا نوشتم. حتی اجازه نمیده خودم دستی اون کلید خارجی رو وارد بکنم و اینم بهم ارور میده و ارور هر دوتاشون با هم یکی هستن.
من دو روز هستش که به این مشکل بر خوردم و هیچ کاری از دستم برنمیاد٬ جز اینکار که comments رو حذف بکنم و از اول اون رو درست بکنم.
در صورت پیدا کردن راه حل لطفا اطلاع بدین خیلی ممنون.
با سلام خواهش
انشالله حل میشه
ولی به نظرم سایت https://www.w3schools.com/sql/sql_foreignkey.asp
رو نگاه کنید کد هاش و توضیحاتش به نظرم کدتون اشتباه مینوسید
موفق باشید
با سلام خدمت شما همراه عزیز
کدوم بخش کد رو متوجه نمیشید؟