মাইএসকিউএল: কোনও টেবিলের সাথে সম্পর্কিত বিদেশী কী কীভাবে চেক করবেন


43

মাইএসকিউএলে কোনও টেবিলের সাথে সম্পর্কিত বিদেশী কীগুলি কীভাবে দেখবেন?

পটভূমি : আমি মাইএসকিএলে একটি টেবিল ফেলে দিতে চেয়েছিলাম যার একটি বিদেশী কী বাধা আছে। আমি যখন এটি করি তখন আমি এটি পাই:

Error Code: 1217. Cannot delete or update a parent row: a foreign key constraint fails

আমি কীভাবে অন্যদের রেখে টেবিলের সাথে সম্পর্কিত বিদেশী কীগুলি ফেলে দিতে পারি।

উত্তর:


55

প্রথমত, FOREIGN KEYএইভাবে আপনার সীমাবদ্ধতার নামটি সন্ধান করুন:

SELECT
  TABLE_NAME,
  COLUMN_NAME,
  CONSTRAINT_NAME,   -- <<-- the one you want! 
  REFERENCED_TABLE_NAME,
  REFERENCED_COLUMN_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE
  REFERENCED_TABLE_NAME = 'My_Table';

এবং তারপরে আপনি নীচের উপায়ে নামকরণের প্রতিবন্ধকতা সরাতে পারেন:

ALTER TABLE My_Table DROP FOREIGN KEY My_Table_Constraint;

তথ্যসূত্র: 1 এবং 2

মন্তব্যগুলিতে @ স্টেফেন উইঙ্কলারের পরামর্শ অনুসারে, যদি বিভিন্ন স্কিমা / ডাটাবেসগুলিতে সেই নামের একাধিক টেবিল থাকে তবে আপনি যেখানে আপনার এই ধারাটিতে আরও একটি শিকারী যুক্ত করতে পারেন:

AND TABLE_SCHEMA = 'My_Database';

1
সম্পাদনার জন্য ধন্যবাদ - আমি আপনার প্রশ্নটি +1 করে প্রতিদান দেব! :-)
ভ্যারেস

16
এছাড়াও SHOW CREATE TABLE My_Table;,।
রিক জেমস

2
@ রিকজেমস যা কেবলমাত্র অন্যান্য টেবিলের মধ্যে সীমাবদ্ধতা প্রদর্শন করে My_TableMy_Tableঅন্যান্য টেবিলে যে সীমাবদ্ধতা রয়েছে তা প্রশ্ন জিজ্ঞাসা করে ।
এডিটিসি

2
কেবলমাত্র এটির দিকে নজর দেওয়া লোকের জন্য: এই বিবৃতিটি পুরো ডাটাবেস সার্ভার জুড়ে নির্দিষ্ট নামের দ্বারা একটি টেবিলকে উল্লেখ করে সমস্ত প্রতিবন্ধকতার তালিকা করে। এটি যুক্ত করে প্রাসঙ্গিক ডাটাবেসে সীমাবদ্ধ করুনAND TABLE_SCHEMA = 'My_Database';
স্টিফেন উইঙ্কলার 13

3

উপরের প্রশ্নের সম্পাদনা করেছেন। রেফারেন্সযুক্ত সারণীর নামটি রেফারেন্সযুক্ত সারণীর নাম হিসাবে সারণীর নাম উল্লেখ করা হয়েছে সারণী নামটি সেই টেবিলটি যা উল্লেখ করা হচ্ছে এবং তাই মূল ক্যোয়ারীর ফলাফল আপনাকে আপনার টেবিলের বিদেশী কীগুলি প্রদর্শন করবে না।

SELECT
  TABLE_NAME,
  COLUMN_NAME,
  CONSTRAINT_NAME,   -- <<-- the one you want! 
  REFERENCED_TABLE_NAME,
  REFERENCED_COLUMN_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE
  Table_name = 'case_qualitycontrolcase' and constraint_name = f
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.