programing

Oracle에서 기본 키 열을 얻는 방법

coolbiz 2023. 3. 31. 23:56
반응형

Oracle에서 기본 키 열을 얻는 방법

기본 키 열의 이름을 알아야 합니다.

입력에는 테이블 이름밖에 없습니다.

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;

'탭'을 확인합니다.Oracle은 테이블 이름을 대문자로 저장하므로 LE_NAME'은 대문자로 표시됩니다.

'리치'의 대답과 같지만 좀 더 간결하다.

  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'
    );
    

이 코드를 사용해 보십시오.여기서 테스트라고 불리는 Oracle의 프라이머리 키 컬럼을 취득하고 쿼리하기 위한 테이블을 만듭니다.

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;
Select constraint_name,constraint_type from user_constraints where table_name** **= ‘TABLE_NAME’ ;

(프라이머리 키가 리스트 되고 나서)

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

(컬럼이 표시됩니다.여기서 PK_XYZ는 프라이머리 키 이름입니다)

다음 스크립트를 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

언급URL : https://stackoverflow.com/questions/9016578/how-to-get-primary-key-column-in-oracle

반응형