RENAME

RENAME문은 기존 테이블 또는 인덱스의 이름을 바꿉니다.

호출

이 명령문은 애플리케이션 프로그램에 임베드되거나 동적 SQL문을 사용하여 실행할 수 있습니다. 이는 DYNAMICRULES 실행 동작이 패키지에 영향을 주는 경우에만 동적으로 준비될 수 있는 실행문입니다(SQLSTATE 42509).

권한 부여

명령문의 권한 부여 ID가 보유한 특권은 다음 중 하나 이상을 포함해야 합니다.
  • 테이블 또는 인덱스에 대한 CONTROL 특권
  • 테이블 또는 인덱스 소유자, 테이블에 대한 SYSCAT.TABLES 카탈로그 뷰 및 인덱스에 대한 SYSCAT.INDEXES 카탈로그 뷰의 OWNER 컬럼에 기록된 바와 같음
  • 스키마에 대한 ALTERIN 특권
  • 스키마에 대한 SCHEMAADM 권한
  • DBADM 권한

구문

Read syntax diagramSkip visual syntax diagramRENAME TABLEsource-table-nameINDEXsource-index-name TOtarget-identifier

설명

TABLE 소스 테이블 이름
이름 바꾸기할 기존 테이블을 이름 지정합니다. 스키마 이름을 포함한 이름은 데이터베이스에 이미 존재하는 테이블을 식별해야 합니다(SQLSTATE 42704). 이름은 카탈로그 테이블(SQLSTATE 42832), 구체화된 쿼리 테이블, 유형이 지정된 테이블(SQLSTATE 42997), 작성된 임시 테이블, 선언된 전역 임시 테이블(SQLSTATE 42995), 별칭 또는 테이블이나 별명이 아닌 오브젝트(SQLSTATE 42809)의 이름이 아니어야 합니다. TABLE 키워드는 선택적입니다.

이름은 행 권한 정의 또는 컬럼 마스크 정의에 참조되는 테이블을 식별하지 않아야 합니다(SQLSTATE 42917).

INDEX 소스 인덱스 이름
이름 바꾸기할 기존 인덱스의 이름을 지정합니다. 스키마 이름을 포함한 이름은 데이터베이스에 이미 존재하는 인덱스를 식별해야 합니다(SQLSTATE 42704). 작성된 임시 테이블 또는 선언된 전역 임시 테이블에 대한 인덱스의 이름이 아니어야 합니다(SQLSTATE 42995). 스키마 이름이 SYSIBM, SYSCAT, SYSFUN 또는 SYSSTAT가 아니어야 합니다(SQLSTATE 42832).
대상 ID
테이블 또는 인덱스에 대한 새 이름을 스키마 이름 없이 지정합니다. 소스 오브젝트의 스키마 이름이 오브젝트에 대한 새 이름을 규정하는 데 사용됩니다. 자격이 부여된 이름은 데이터베이스에 이미 존재하는 테이블, 뷰, 별명 또는 인덱스를 식별하면 안됩니다(SQLSTATE 42710).

규칙

테이블 이름을 바꾸는 경우 소스 테이블은 다음 경우가 아니어야 합니다.

  • 기존의 구체화된 쿼리 테이블 정의에 참조됨
  • 기존의 통계 뷰 정의에 참조됩니다. 여기에는 표현식 기반 키를 포함하는 색인 생성의 일부로 생성되는 시스템 생성 통계 보기가 포함됩니다.
    참고: 11.5.7 의 출시와 함께, 식 기반 키를 가진 인덱스를 가진 테이블의 이름을 바꾸는 것이 가능해졌습니다. 단, 식에 한정된 이름이 포함되어 있지 않아야 합니다.
  • 기존 트리거의 주제 테이블임
  • 참조 무결성 제한조건의 상위 또는 종속 테이블임
  • 기존 참조 컬럼의 범위임
  • Spatial Extender에의 공간 등록에서 참조되는 경우. 공간 컬럼을 등록 취소한 후 이름 바꾸기가 완료된 다음 이들을 다시 등록하십시오.
  • 분해에 사용 가능했던 XSR 오브젝트에 의하여 참조됨

소스 테이블이 이러한 조건 중 하나 이상을 위반하는 경우 오류(SQLSTATE 42986)가 리턴됩니다.

인덱스의 이름을 바꾸는 경우:
  • 소스 인덱스는 유형이 지정된 테이블이 기반인 구현 테이블에 대한 시스템 생성 인덱스가 아니어야 합니다(SQLSTATE 42858).

참고

  • 3개 파트 이름의 CHECK 제한조건은 지원되지 않으며 SQL0750을 리턴합니다. 대신 컬럼 이름만 사용하십시오.
  • 카탈로그 엔트리가 새 테이블 또는 인덱스 이름을 반영하도록 갱신됩니다.
  • 소스 테이블 및 인덱스 이름과 연결된 모든 권한은 새 테이블 또는 인덱스 이름으로 전송됩니다(권한 부여 카탈로그 테이블이 적절하게 갱신됨).
  • 소스 테이블에서 정의된 인덱스는 새 테이블로 전송됩니다(인덱스 카탈로그 테이블이 적절하게 갱신됨).
  • RENAME TABLE은 소스 테이블에 종속되는 패키지를 무효화합니다. RENAME INDEX은 소스 테이블에 종속되는 패키지를 무효화합니다.
  • 별명이 source-table-name에 사용되는 경우, 테이블 이름을 해결해야 합니다. 별명이 RENAME문으로 변경되지 않고 이전 테이블 이름을 계속 참조합니다. 테이블이 원래 스키마 내에서 이름 바꾸기됩니다.
  • 기본 키 또는 고유 제한조건이 있는 테이블은 기본 키 또는 고유 제한조건이 외부 키에 참조되지 않는 경우 이름을 바꿀 수 있습니다.

예:

  • 예 1: EMP 테이블의 이름을 EMPLOYEE로 변경하십시오.
       RENAME TABLE EMP TO EMPLOYEE
       RENAME TABLE ABC.EMP TO EMPLOYEE
  • 예 2: 인덱스 NEW-IND의 이름을 IND로 변경하십시오.
       RENAME INDEX NEW-IND TO IND
       RENAME INDEX ABC.NEW-IND TO IND