কম্পিউটার

MySQL ত্রুটি 1452 - যোগ করা যাবে না বা একটি চাইল্ড সারি:একটি বিদেশী কী সীমাবদ্ধতা ব্যর্থ হয়


ত্রুটি 1452 বোঝার জন্য, প্রথমে আমাদের একটি টেবিল তৈরি করতে হবে এবং একটি বিদেশী কী সীমাবদ্ধতার সাহায্যে এটিকে অন্য টেবিলের সাথে সম্পর্কিত করতে হবে।

প্রথম টেবিল তৈরি করা হচ্ছে -

mysql> টেবিল তৈরি করুন ForeignTable-> (-> id int,-> name varchar(200),-> Fk_pk int-> );কোয়েরি ঠিক আছে, 0 সারি প্রভাবিত (0.43 সেকেন্ড)

প্রথম টেবিলটি সফলভাবে তৈরি করার পর, আমরা দ্বিতীয় টেবিলটি তৈরি করব -

mysql> সারণী তৈরি করুন primeTable1-> (-> Fk_pk int,-> DeptName varchar(200),-> প্রাথমিক কী(Fk_pk)-> );কোয়েরি ঠিক আছে, 0 সারি প্রভাবিত (0.48 সেকেন্ড)

এখন, আমরা উভয় টেবিল তৈরি করেছি। তারপরে উভয় টেবিলই অল্টারকমান্ডের সাহায্যে বিদেশী কী সীমাবদ্ধতা যোগ করার সাথে সম্পর্কিত। সিনট্যাক্স নিম্নরূপ -

টেবিল পরিবর্তন করুন yourFirstTable যোগ করুন সীমাবদ্ধতা anyConstraintName বিদেশী কী (কলাম_নাম যা দ্বিতীয় টেবিলে বিদেশী কী ব্যবহার করে) yourSecondTable(কলাম_নাম যা প্রাথমিক কী ইনসেকেন্ড টেবিলে কাজ করে)।

এখন, উপরের প্রশ্নটি উভয় টেবিলের সাথে সম্পর্কিত করতে ব্যবহৃত হয়। এটি নিম্নরূপ দেওয়া হয় -

mysql> সারণি পরিবর্তন করুন ForeignTable সীমাবদ্ধতা যোগ করুনFKPK বিদেশী কী(Fk_pk) রেফারেন্সপ্রাইমারি টেবিল1(Fk_pk);কোয়েরি ঠিক আছে, 0 সারি প্রভাবিত (1.57 সেকেন্ড)রেকর্ডস:0 ডুপ্লিকেট:0 সতর্কতা:0 

এখন, উভয় টেবিল সম্পর্কিত। −

এইভাবে রেকর্ডগুলি 'বিদেশী টেবিল' সারণীতে সন্নিবেশ করা হয়েছে
mysql> ফরেনটেবল মান (1,'জন',1);

এর ফলে একটি ত্রুটি দেখা যায় যা নীচের আউটপুট −

এ দেখানো হয়েছে
ত্রুটি 1452 (23000):একটি চাইল্ড সারি যোগ বা আপডেট করা যাবে না:একটি বিদেশী কী সীমাবদ্ধতা ব্যর্থ হয়(`ব্যবসা`।`বিদেশী', সীমাবদ্ধতা `constFKPK` বিদেশী কী (`Fk_pk`) রেফারেন্স `প্রাইমারিটেবল1` (`fk_pk`) রেফারেন্স ))

উপরের আউটপুটে, আমরা 'একটি চাইল্ড সারি যুক্ত বা আপডেট করা যাবে না:একটি বিদেশী কী-সংক্রান্ত ব্যর্থতা' ত্রুটিটি পাচ্ছি। আমরা নীচের দেখানো −

সারণী primeTable1-এ রেকর্ড সন্নিবেশ করে এই ত্রুটিটি দূর করতে পারি
mysql> প্রাইমারিটেবল1 মান (1,'কম্পিউটারসায়েন্স') এ ঢোকান; কোয়েরি ঠিক আছে, 1 সারি প্রভাবিত (0.14 সেকেন্ড)

প্রাইমারি টেবিল 1 টেবিলে রেকর্ড ঢোকানোর পর, আমরা কোনো ত্রুটি ছাড়াই ফরেনটেবল টেবিলে প্রয়োজনীয় রেকর্ড ঢোকাতে পারি। এটি নীচে দেখানো হয়েছে -

mysql> বিদেশী টেবিলের মান (1,'জন',1) ঢোকান; ঠিক আছে, 1 সারি প্রভাবিত (0.13 সেকেন্ড)

এখন, আমরা নির্বাচন কমান্ডের সাহায্যে ফরেনটেবলের টেবিল রেকর্ডগুলি প্রদর্শন করতে পারি, যা নিম্নরূপ -

ফরেনটেবল থেকে
mysql> SELECT *;

উপরের প্রশ্নের আউটপুট হল −

+------+------+------+| আইডি | নাম | Fk_pk |+------+------+-------+| 1 | জন | 1 |+------+------+------+1 সারি সেটে (0.00 সেকেন্ড)

আমরা নির্বাচন কমান্ডের সাহায্যে প্রাথমিক টেবিল 1 এর টেবিল রেকর্ডগুলিও প্রদর্শন করতে পারি, যা নিম্নরূপ -

প্রাথমিক টেবিল 1 থেকে
mysql> SELECT *;

উপরের প্রশ্নের আউটপুট হল −

<প্রে>+---------+-----------------+| Fk_pk | বিভাগের নাম |+------+-----------------+| 1 | কম্পিউটার সায়েন্স |+------+-----------------+1 সারি সেটে (0.00 সেকেন্ড)

ত্রুটি 1452 - একটি চাইল্ড সারি যোগ বা আপডেট করা যাবে না:একটি বিদেশী কী সীমাবদ্ধতা ব্যর্থ হয় যখন প্রাথমিকভাবে ফরেনটেবলে ডেটা রেকর্ড ঢোকানো হয়।

দ্রষ্টব্য:প্রথমত, উপরের ত্রুটি এড়াতে দ্বিতীয় টেবিলে অর্থাৎ প্রাথমিক টেবিল 1-এ রেকর্ড যোগ করুন।

  1. মাইএসকিউএল ডিবিতে বিদেশী কী কীভাবে সনাক্ত করবেন?

  2. MySQL-এ ডুপ্লিকেট কী আপডেটের জন্য সীমাবদ্ধতা যোগ করুন

  3. মাইএসকিউএল-এর বিভিন্ন টেবিলে কীভাবে প্রাথমিক কী বিদেশী হিসাবে উল্লেখ করবেন?

  4. মাইএসকিউএল-এ বিদেশী কী ব্যবহার করা