ওরাকল এসকিউএলে একটি সারণীর জন্য সমস্ত প্রতিবন্ধকতার নাম প্রদর্শন করুন


115

ওরাকল এসকিউএলে আমি যে একাধিক টেবিল তৈরি করেছি তার প্রতিবন্ধকতার জন্য আমি একটি নাম সংজ্ঞায়িত করেছি।

সমস্যাটি হ'ল কোনও নির্দিষ্ট টেবিলের কলামের জন্য একটি সীমাবদ্ধতা ফেলে দেওয়ার জন্য আমার নামটি জানতে হবে যা আমি প্রতিবন্ধকতার জন্য সরবরাহ করেছি, যা আমি ভুলে গিয়েছি।

আমি সারণীর প্রতিটি কলামের জন্য নির্দিষ্ট করে রেখেছি এমন সমস্ত প্রতিবন্ধকতার নাম কীভাবে তালিকাভুক্ত করব?

এটি করার জন্য কোনও এসকিউএল বিবৃতি আছে?

উত্তর:


160

আপনি QUERY প্রয়োজন তথ্য অভিধান , নির্দিষ্টভাবে USER_CONS_COLUMNSদৃশ্য টেবিল কলাম এবং সংশ্লিষ্ট সীমাবদ্ধতা দেখতে:

SELECT *
  FROM user_cons_columns
 WHERE table_name = '<your table name>';

এফওয়াইআই, যদি না আপনি সুনির্দিষ্টভাবে আপনার টেবিলটি একটি ছোট মামলার নাম দিয়ে তৈরি করেন (ডাবল কোট ব্যবহার করে) তবে সারণির নামটি উপরের ক্ষেত্রে ডিফল্ট হবে তাই আপনার প্রশ্নের ক্ষেত্রে এটি নিশ্চিত কিনা ensure

আপনি যদি সীমাবদ্ধতা সম্পর্কে আরও তথ্য দেখতে চান তবে নিজেই এই USER_CONSTRAINTSদর্শনটি জিজ্ঞাসা করুন :

SELECT *
  FROM user_constraints
 WHERE table_name = '<your table name>'
   AND constraint_name = '<your constraint name>';

যদি টেবিলটি এমন কোনও স্কিমাতে রাখা থাকে যা আপনার ডিফল্ট স্কিমা নয় তবে আপনার সাথে ভিউগুলি প্রতিস্থাপনের প্রয়োজন হতে পারে:

all_cons_columns

এবং

all_constraints

যেখানে ধারাটিতে যুক্ত করা:

   AND owner = '<schema owner of the table>'

টাইপো:USER_CONS_COLUMNS
পল ড্রপার

3
<আপনার টেবিলের নাম> কেস সংবেদনশীল, আমার মনে হয়; এটি উচ্চতর ক্ষেত্রে হওয়া উচিত।
কানাগাভেলু সুগুমার

ownerউভয় ক্ষেত্র (ব্যবহারকারী | সব | DBA) _constraints এবং (ব্যবহারকারী | সব | DBA) _cons_columns টেবিলের মালিকের (ওরাকল ডকুমেন্টেশন প্রতি) বাধ্যতা মালিক নয়। এই মতামতের যে কোনও একটিতে টেবিলের মালিক কোনও উপলভ্য ক্ষেত্র নয়। এর অর্থ কি এই বাধা মালিক এবং টেবিলের মালিক অবশ্যই হওয়া উচিত?
ডেভিড ফ্লেচার


11

সম্ভবত এটি সাহায্য করতে পারে:

SELECT constraint_name, constraint_type, column_name
from user_constraints natural join user_cons_columns
where table_name = "my_table_name";

চিয়ার্স


8
select constraint_name,constraint_type 
from user_constraints
where table_name = 'YOUR TABLE NAME';

দ্রষ্টব্য: টেবিলের নাম ক্যাপগুলিতে থাকা উচিত।

আপনি যদি সারণির নামটি না জানেন তবে,

select constraint_name,constraint_type,table_name 
from user_constraints;


0

নীচের দুটি কমান্ড ব্যবহার করুন। সবকিছু অবশ্যই বড়হাতে হবে। টেবিলের নাম অবশ্যই উদ্ধৃতি চিহ্নগুলিতে আবৃত করা উচিত:

--SEE THE CONSTRAINTS ON A TABLE
SELECT COLUMN_NAME, CONSTRAINT_NAME FROM USER_CONS_COLUMNS WHERE TABLE_NAME = 'TBL_CUSTOMER';

--OR FOR LESS DETAIL
SELECT CONSTRAINT_NAME FROM USER_CONSTRAINTS WHERE TABLE_NAME = 'TBL_CUSTOMER';
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.