본문 바로가기
OraclE

테이블 rename시 dependency는?

by 타마마임팩트_쫀 2014. 7. 7.

테이블 이름을 바꾸면 defendency는 어떻게 바뀔까?

테스트로 간단 하게 알아보자.



SQL> create table test_tab1 (col1 number);


테이블이 생성되었습니다.


SQL> create unique index test_tab1_pk

  2  on test_tab1

  3  (col1);


인덱스가 생성되었습니다.


SQL> alter table test_tab1 add constraint test_tab1_pk primary key (col1);


테이블이 변경되었습니다.


SQL> create synonym test.test_tab1 for test_tab1;


동의어가 생성되었습니다.


SQL> grant select on test_tab1 to test;


권한이 부여되었습니다.


SQL> create view test.test_tab1_vw as select * from test_tab1;


뷰가 생성되었습니다.


SQL> create or replace

  2  TRIGGER test_tab1_trg

  3  BEFORE update ON test_tab1

  4  FOR EACH ROW

  5  BEGIN

  6  null;

  7* END;

SQL> /


트리거가 생성되었습니다.


SQL> 


REFERENCED_NAME       OWNER    NAME   TYPE STATUS

------------------------------ ------------ ------------------------------ ------------------------------------ --------------

TEST_TAB1       TEST    TEST_TAB1_VW   VIEW VALID

      TEST2    TEST_TAB1_TRG   TRIGGER VALID

      TEST    TEST_TAB1   SYNONYM VALID


SQL> alter table test_tab1 rename to test_tab2;


테이블이 변경되었습니다.



REFERENCED_NAME       OWNER    NAME   TYPE STATUS

------------------------------ ------------ ------------------------------ ------------------------------------ --------------

TEST_TAB2       TEST2    TEST_TAB1_TRG   TRIGGER INVALID


오브젝트가 invalid 빠지긴 했지만 compile 하면 되고,

트리거만 따라가고 나머지는 test_tab1에 아직도 종속적이다.


결론, 테이블 이름 변경시 인덱스 이름도 바꿔야 하고, 제약조건 이름도 바꿔야 하고, 시노님 재생성 하고...끝

'OraclE' 카테고리의 다른 글

FILESYSTEMIO_OPTIONS  (0) 2014.07.22
session 레벨 sql trace  (0) 2014.07.16
ORA-14102: only one LOGGING or NOLOGGING clause may be specified  (0) 2014.06.18
oracle hr schema 생성  (0) 2014.05.21
rman 백업 확인  (0) 2014.03.27