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


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.