2017-10-18 1 views
0

저는 데이터베이스 개발자 또는 관리자가 아닌 Oracle 최종 사용자입니다.Oracle 영구 열 별칭

우리의 데이터베이스 열 이름에 오타를 가지고, 열 유사 내가 내 쿼리에서 이러한 열을 사용할 필요가 ADRESS2 대신

ADDRESS2의 이름이되고, 그것은 어떤 컬럼에 적용되는 오타 기억하기 어렵다. 또한, 나는 항문에 대해 일종의이게 내 코드가 (너무 전문적이 아닌) 만드는 방법에 대한 persnickety.

프로덕션 환경에서이 열의 이름이 실제로 변경 될 가능성은 의심 스럽습니다. 많은 종속성이있는 우선 순위가 낮습니다.

이 상황에서 가장 좋은 방법은 무엇입니까?

나는 몇 가지 옵션을 생각할 수 있습니다 :

  • 는 오타

에 따라 뷰를 만들 select(bad_name good_name, * from table)

  • 와 테이블을 포장 의도적 인 것으로 의견을 추가 할 하지만 다음과 같이 할 수있는 방법이 있습니다.

    DECLARE address2 CHAR(8) := 'adress2';  
    

    쿼리에서 사용하지만 char "adress2"대신 ADRESS2 값을 반환합니다.

    원하는 솔루션이 될 것이다 연습이 :

    • 열 이름이 다루기 힘든 또는
    • 오해의 소지가있는 상황에 대한 응답으로 개발자에 의해 인식 될 수 쿼리의 복잡성을 증가시키지 것
  • 답변

    2

    내가보기에 합법적 인 응답 만 볼 수 있습니다. 내가 네 상황에 있다면 난 칼럼을 고쳐 줄거야. 실패하면, 나는 전망을 만들 것이다.

    그러나, 귀하의 질문에 뭔가 날이 그래서 여기, 당신이 "거기"뭔가 더 고려해야 할 의사가 있다고 생각합니다

    :

    alter table sample_table add address2 
        invisible generated always as (addres2 || '') virtual; 
    

    이 당신의 모든 응용 프로그램에 영향을주지 가능성이 매우 높다 명시 적으로 요청하지 않는 한 아무 것도 표시되지 않으므로 ADDRESS2 열이 표시됩니다.

    하지만 persnickity 유형으로 사용할 수 있습니다.

    함수 ADDRES2 || ''은 쿼리가이 방법으로 액세스하는 열에 대해 인덱스를 사용하지 않는다는 것을 의미합니다.

    반복 : 열 이름을 변경하거나보기를 만듭니다.

    +0

    OP에 사과 - 나는 11g에있는 것을 본다. 'INVISIBLE' 열은 없습니다 (12c 기능). –

    +0

    괜찮습니다. 아직도 잘 알고 있습니다. – C8H10N4O2

    +0

    눈에 보이지 않아도됩니다.당신은'alter table sample_table add address2가 항상 (addres2 || '') 가상으로 생성 된 것처럼 가질 수 있습니다 - 이것은 11g Release 1에서 작동합니다. – g00dy