মাইএসকিউএল ডাটাবেস থেকে সীমাবদ্ধতার তালিকা


92

আমি কীভাবে একটি নির্দিষ্ট ডাটাবেস থেকে সমস্ত সীমাবদ্ধতার একটি তালিকা পেতে পারি?


4
মাইএসকিউএলে একাধিক ধরণের প্রতিবন্ধকতা রয়েছে। আপনি কোনটি বোঝাতে চান? আপনি যে ধরণের জিনিসটি সন্ধান করছেন তার উদাহরণ দিতে পারেন?
— মার্ক বাইয়ার্স

উত্তর:


146

information_schema.table_constraintsপ্রতিটি টেবিলের উপর নির্ধারিত সীমাবদ্ধতার নাম পেতে সারণীটি ব্যবহার করুন :

select *
from information_schema.table_constraints
where constraint_schema = 'YOUR_DB'

information_schema.key_column_usageএই সীমাবদ্ধতার প্রত্যেকটিতে ক্ষেত্রগুলি পেতে টেবিলটি ব্যবহার করুন :

select *
from information_schema.key_column_usage
where constraint_schema = 'YOUR_DB'

পরিবর্তে আপনি যদি বিদেশী কী বাধা সম্পর্কে কথা বলছেন তবে ব্যবহার করুন information_schema.referential_constraints:

select *
from information_schema.referential_constraints
where constraint_schema = 'YOUR_DB'

4
এই তালিকায় কেবল অনন্য, প্রাথমিক কী বা বিদেশী কী বাধা অন্তর্ভুক্ত করা হবে। চেক সম্ভব, তবে প্রয়োগ করা হয়নি। ডিফল্ট সীমাবদ্ধতা এই কোয়েরিটি ব্যবহার করে দৃশ্যমান হবে না।
— ওএমজি পনিজ

মাইএসকিউএল চেক সীমাবদ্ধতা সঞ্চয় করে না। যদি আপনি কোনওটিকে সংজ্ঞায়িত করার চেষ্টা করেন তবে এটি পার্স করে এবং নিঃশব্দে এটিকে ত্যাগ করে।
— বিল কারভিন

4
ডিফল্ট মান কোনও সীমাবদ্ধতা হিসাবে গণনা করে না। এটা তোলে সংরক্ষিত রয়েছে information_schema.columns.column_default।
— বিল কারভিন

22

@ সেনসুলফুলের দুর্দান্ত উত্তর।

যারা কেবলমাত্র বাধা নামগুলির তালিকা খুঁজছেন (এবং অন্যান্য বিবরণ / কলাম নয়) তাদের জন্য আমি সংশোধিত ক্যোয়ারী উপস্থাপন করছি:

SELECT DISTINCT(constraint_name) 
FROM information_schema.table_constraints 
WHERE constraint_schema = 'YOUR_DB' 
ORDER BY constraint_name ASC;

4
আপনি যদি এটা একবারের আপনি তা খুঁজে পেতে একটি বিলোপ করতে হবে, এখানে দেখতে stackoverflow.com/a/838412/2401804
— r3wt

9

আপনি যদি ওপরে এবং বিদেশী কী বাধাগুলির পাশাপাশি ওএন_আপডে এবং ওএন_ডিএলটি এবং কলাম এবং বিদেশী কলামের নামগুলি একসাথে সমস্ত নিয়মগুলি দেখতে চান তবে এটি সত্যিই সহায়তা করে:

SELECT tc.constraint_schema,tc.constraint_name,tc.table_name,tc.constraint_type,kcu.table_name,kcu.column_name,kcu.referenced_table_name,kcu.referenced_column_name,rc.update_rule,rc.delete_rule

FROM information_schema.table_constraints tc

inner JOIN information_schema.key_column_usage kcu
ON tc.constraint_catalog = kcu.constraint_catalog
AND tc.constraint_schema = kcu.constraint_schema
AND tc.constraint_name = kcu.constraint_name
AND tc.table_name = kcu.table_name

LEFT JOIN information_schema.referential_constraints rc
ON tc.constraint_catalog = rc.constraint_catalog
AND tc.constraint_schema = rc.constraint_schema
AND tc.constraint_name = rc.constraint_name
AND tc.table_name = rc.table_name

WHERE tc.constraint_schema = 'my_db_name'

এমনকি আপনি এই কলামগুলি সম্পর্কে আরও কিছু তথ্য যুক্ত করতে চাইতে পারেন, কেবল এটি এসকিউএলে যুক্ত করুন (এবং আপনি যে কলামগুলি চান তা নির্বাচন করুন):

LEFT JOIN information_schema.COLUMNS c
ON kcu.constraint_schema = c.table_schema
AND kcu.table_name = c.table_name
AND kcu.column_name = c.column_name

-3

নির্বাচন করুন * থেকে USER_CONSTRAINTS যেখানে ট্যাবেল্ক = "ট্যাবনাম";


4
এটি মাইএসকিউএল নয়, ওরাকলটিতে রয়েছে যতদূর আমি জানি।
— প্রদ্যোম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.