본문 바로가기
OraclE

object 변경시 dependency

by 타마마임팩트_쫀 2015. 1. 6.

 

테이블 이름을 변경할 경우 인덱스는 자동으로 변경된 테이블 이름으로 description이 변경되는 것은 오라클을 조금만 해본 사람은 다 알것이다. 그럼 다른 오브젝트는 어떻게 되는지 dependency 를 확인해 보자

 

테이블 생성

SQL> create table test_0106 (col1 number);

Table created.

SQL> insert into test_0106 values(1);

1 row created.

SQL> commit;

Commit complete. 

 

트리거1 생성

SQL> create OR REPLACE trigger test_0106_trg
before INSERT OR DELETE OR UPDATE of col1 on test_0106
for each row
DECLARE
  V_chr CHARACTER(1);
begin
IF INSERTING THEN
select * INTO V_chr from dual;
end if;
IF DELETING THEN
select * INTO V_chr from dual;
end if; 
IF UPDATING THEN
select * INTO V_chr from dual;
end if;
end;
/

Trigger created.

 

트리거2 생성

SQL> create OR REPLACE trigger test_0106_trg_2
before INSERT on test_0106_2
for each row
DECLARE
  V_chr CHARACTER(1);
begin
IF INSERTING THEN
insert into test_0106 values(9);
end if;
end;

Trigger created.

 

프로시저 생성

SQL> create OR REPLACE PROCEDURE test_0106_proc
is
V_chr number;
begin
select * INTO V_chr from test_0106;
end;
/

Procedure created.

 

뷰 생성

SQL> CREATE OR REPLACE VIEW test_0106_view
( col1)
as select col1 from test_0106; 

View created.

 

시노님 생성

SQL> CREATE SYNONYM test_0106_syno
FOR test_0106; 

Synonym created.

 

각 오브젝트 상태 확인

 

 

테이블 이름 변경 및 신규 테이블 생성

SQL> alter table test_0106 rename to bk_test_0106;

Table altered.

SQL> create table test_0106 (col1 number);

Table created.

SQL> insert into test_0106 values(2);

1 row created.

SQL> commit;

Commit complete.

 

각 오브젝트 상태 확인

 

 

오브젝트 compile

SQL> alter TRIGGER TEST_0106_TRG compile;

Trigger altered.

SQL> alter PROCEDURE TEST_0106_PROC compile;

Procedure altered.

SQL> alter VIEW TEST_0106_VIEW compile;

View altered.

SQL> alter SYNONYM TEST_0106_SYNO compile;

Synonym altered.

SQL> alter TRIGGER TEST_0106_TRG_2 compile;

Trigger altered.

 

각 오브젝트 상태 확인

 

 

※ 트리거를 제외한 나머지 오브젝트는 테이블 이름을 변경해도 dependency가 자동으로 변경 되지 않는다. 다만 트리거의 경우 테이블이 트리거의 주체가 되는 경우(ON절에 사용된 경우)에는 테이블 이름 변경시 자동으로 변경 되나, 내용의 대상이 대는 경우(begin절에 사용된 경우)는 자동으로 변경 되지 않는다.

 

 

'OraclE' 카테고리의 다른 글

flashback  (0) 2015.04.27
append 힌트 재대로 사용하시나요?  (0) 2015.03.30
pid로 port 찾기 (lsof)  (0) 2014.09.17
logminor 로그마이너  (0) 2014.09.05
v$parameter  (0) 2014.08.05