sourcecode

Oracle 열을 첫 번째 위치로 이동

codebag 2023. 10. 15. 17:16
반응형

Oracle 열을 첫 번째 위치로 이동

Oracle 테이블의 열을 마지막 위치에서 첫 번째 위치로 이동할 수 있는 방법이 있습니까?누군가 ID 열을 삭제하고 다시 만들었습니다.그래서 이제 이것은 끝에 와있는데, 이것은 우리의 PHP 스크립트 중 일부가 첫 번째 열을 식별자로 사용하고 있기 때문에 문제가 됩니다. (이 기본 객체를 사용하는 100개 이상의 다른 모델과 함께 하나의 추상 모델...)

참고 항목:

Oracle FAQ는 다음과 같이 말합니다.

Oracle은 기존 테이블 끝에만 열을 추가할 수 있습니다.

테이블을 다시 만들어야 합니다.

RENAME tab1 TO tab1_old;

CREATE TABLE tab1 AS SELECT id, <the rest of your columns> FROM tab1_old;

테이블의 열의 논리적 순서를 수정하는 가장 간단한 방법은 테이블 이름을 바꾸고 "오른쪽" 열 위치로 보기를 만드는 것입니다.

ALTER TABLE your_table RENAME TO your_table_t;

CREATE VIEW your_table AS SELECT <columns in the right order> FROM your_table_t;

-- grants on the view (the same as the table)
GRANT ** TO ** ON your_table;

응용프로그램은 열이 "올바른" 위치에 있는 것처럼 동작합니다.물리적인 구조는 손대지 않아도 됩니다.

Oracle 12c에서는 논리적으로 열을 재정렬하는 것이 더 쉬워졌습니다.열을 보이지 않게/보이지 않게 하여 얻을 수 있습니다.보이지 않는 열을 보이지 않는 열로 변경하면 열이 순서대로 마지막에 나타납니다.

보이지 않는 열 사용 고려

wxyz 테이블 만들기:

CREATE TABLE t (
    w INT,   
    y VARCHAR2,
    z VARCHAR2,
    x VARCHAR2
    
);

x 열을 가운데로 재배열합니다.

    ALTER TABLE wxyz MODIFY (y INVISIBLE, z INVISIBLE);
    ALTER TABLE wxyz MODIFY (y VISIBLE, z VISIBLE);
    
    DESCRIBE wxyz;

Name
----
w 
x  
y 
z

(데이터를 잃지 않도록 이름 바꾸기/임시 테이블을 통해) 테이블을 다시 만드는 것이 제가 아는 유일한 방법입니다.

단순히 칼럼 순서만 바꾸는 것은 불가능하다고 생각합니다.

데이터/열이 많지 않은 경우 원하는 순서대로 열 이름을 바꿀 수 있습니다.그럼 그냥 '여기 당신의 테이블 이름'에서 *를 삭제하세요.아직 많은 레코드를 삽입하지 않았기 때문에 이것은 저에게 좋은 해결책이었습니다.

보기를 통해 테이블에 액세스하여 애플리케이션 기술에 중요한 논리적 순서를 손쉽게 재배치할 수 있습니다.

오라클에서 열을 이동할 수 없습니다.마지막 위치에서 생성됩니다.원하는 사람이 있다면 보기를 만들거나 새 테이블을 만들어야 합니다.

나는 항상 이것을 사용합니다.

ALTER TABLE MOVE COLUMN column_name TO ordinal_position;

언급URL : https://stackoverflow.com/questions/1824654/oracle-move-column-to-the-first-position

반응형