ওরাকলে প্রাথমিক কী কলামটি পাবেন?


107

আমার প্রাথমিক কী কলামটির নাম নেওয়া দরকার।

ইনপুটটিতে আমার কেবল টেবিলের নাম রয়েছে।

উত্তর:


190
SELECT cols.table_name, cols.column_name, cols.position, cons.status, cons.owner
FROM all_constraints cons, all_cons_columns cols
WHERE cols.table_name = 'TABLE_NAME'
AND cons.constraint_type = 'P'
AND cons.constraint_name = cols.constraint_name
AND cons.owner = cols.owner
ORDER BY cols.table_name, cols.position;

ওরাকল যেহেতু বড় ক্ষেত্রে টেবিলের নাম সংরক্ষণ করে।


ধন্যবাদ, রিচি আরও একটি প্রশ্ন: 'পি' এনকোড করবেন কীভাবে? আমার এটি "এক্সিকিউট অবিলম্বে" দিয়ে সম্পাদন করা দরকার। আবার thnx।
— কিরিল এ।

4
আমার মনে হয় আপনি কেবল এই '' পি '' এর মতো দুটি একক উদ্ধৃতি রাখবেন
— গ্রেগ রেইনোল্ডস

বিকল্পভাবে, আপনি এটি ব্যবহার করে উদ্ধৃতি দিতে পারেনq ।
— বুরহান আলী

এবং সীমাবদ্ধতা_প্রকার = বিদেশী কী'র জন্য 'আর'
— অবিনাশ বিশয়

টেবিলের আগে স্কিমা উপসর্গ না রাখলে আমার জন্য কাজ করেছিল! ধন্যবাদ!
— নির্ভীক ভবিষ্যত

20

'রিচি' থেকে উত্তর হিসাবে একই তবে কিছুটা আরও সংক্ষিপ্ত।

  1. শুধুমাত্র ব্যবহারকারীর সীমাবদ্ধতার জন্য প্রশ্ন

    SELECT column_name FROM all_cons_columns WHERE constraint_name = (
      SELECT constraint_name FROM user_constraints 
      WHERE UPPER(table_name) = UPPER('tableName') AND CONSTRAINT_TYPE = 'P'
    );
  2. সমস্ত বাধা জন্য প্রশ্ন

    SELECT column_name FROM all_cons_columns WHERE constraint_name = (
      SELECT constraint_name FROM all_constraints 
      WHERE UPPER(table_name) = UPPER('tableName') AND CONSTRAINT_TYPE = 'P'
    );

নিঃসন্দেহে আমার জন্য এটি ভাল কাজ করেছে worked আপনি কি আপনার সমস্যাটিকে আরও কিছুটা ভাবের মতো বর্ণনা করতে পারেন?
— আমার নাম-ইজ

আমি এই কোয়েরি থেকে কোনও ফলাফল পাই না, তবে আমি গৃহীত উত্তরের জন্য কোয়েরি থেকে ফলাফল পেয়েছি।
— নির্ভীক ভবিষ্যত

2
টুইট user_constraintsদ্বারা প্রতিস্থাপন all_constraints।
— আমার নাম-ইজ

যদি আপনার দুটি বা ততোধিক স্কিমায় একই নামের একটি টেবিল থাকে তবে এটি সমস্যার সৃষ্টি করে - এতে যোগদানের SELECT owner, column_name, position FROM all_cons_columns WHERE (owner, constraint_name) in (SELECT owner, constraint_name FROM all_constraints WHERE UPPER(table_name) = UPPER('&tableName') AND CONSTRAINT_TYPE = 'P') order by owner, position;
— মার্ক স্টিয়ার্ট

1
@ মার্কস্টেয়ার্ট আমি সম্মতি জানাই দ্বিতীয় ক্যোয়ারি কাজ করবে না। তবে আপনার সমাধানটি অদক্ষ। চেষ্টা করুন: "নির্বাচন করুন cols.column_name AS হিসাবে KEYPREAM, '=' AS KEY_CONDITION হিসাবে, cols.column_name হিসাবে KEY_LOOKUP, '' AS KEY_STREAM2 থেকে ব্যবহারকারী_সংশ্লিষ্ট কনস, ব্যবহারকারীর_সামগ্রী_সামগ্রী_সামগ্রী_নাম_সেন্ট_নাম_সিএন_এনটিএন_এনটিএন_এনটিএন_এনটিএন_এনটিএন_এনটিএন_এনটিএন_এনটিএন_এনটিএন_এনএন_এনএন = '<TABLE_NAME>' এবং কনস.টেবল_নাম = কলস.সেবদ্ধ_নাম; "
— আলেকজান্ডার হিম

2
Select constraint_name,constraint_type from user_constraints where table_name** **= ‘TABLE_NAME’ ;

(এটি প্রাথমিক কী তালিকাভুক্ত করবে এবং তারপরে)

Select column_name,position from user_cons_cloumns where constraint_name=’PK_XYZ’; 

(এটি আপনাকে কলামটি দেবে, এখানে PK_XYZ হল প্রাইমির মূল নাম)


1

এই কোডটি ব্যবহার করে দেখুন এখানে আমি ওরাকলে প্রাথমিক কী কলামটি পেতে একটি টেবিল তৈরি করেছি যা পরীক্ষা বলা হয় এবং তারপরে কোয়েরি

create table test
(
id int,
name varchar2(20),
city varchar2(20),
phone int,
constraint pk_id_name_city primary key (id,name,city)
);

SELECT cols.table_name, cols.column_name, cols.position, cons.status, cons.owner FROM all_constraints cons, all_cons_columns cols WHERE cols.table_name = 'TEST' AND cons.constraint_type = 'P' AND cons.constraint_name = cols.constraint_name AND cons.owner = cols.owner  ORDER BY cols.table_name, cols.position;

0

নীচের স্ক্রিপ্টটি FindPK.sql এর মতো কিছু হিসাবে সংরক্ষণ করুন।

set verify off
accept TABLE_NAME char prompt 'Table name>'

SELECT cols.column_name
FROM all_constraints cons NATURAL JOIN all_cons_columns cols
WHERE cons.constraint_type = 'P' AND table_name = UPPER('&TABLE_NAME');

এটি তখন ব্যবহার করে বলা যেতে পারে

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