Oracle에서 모든 외부 키, 제약 조건, 트리거 및 시퀀스가 업데이트되고 기존 데이터가 보존되도록 테이블 이름을 변경하려면 어떻게 해야 합니까?
Oracle에서 테이블 이름을 변경해야 하지만 테이블을 참조하는 외부 키, 제약 조건, 트리거 및 시퀀스가 새 이름을 사용하도록 업데이트되었는지 확인하고 싶습니다.
내가 아무것도 부서지지 않았다고 어떻게 확신할 수 있습니까?
테이블에 포함된 기존 데이터를 보존합니다.
네가 만약
ALTER TABLE old_table_name
RENAME TO new_table_name;
기존의 모든 제약 조건(외부 키 및 기타 제약 조건) 및 트리거는 새로 이름이 변경된 개체를 참조합니다.시퀀스는 테이블과 관련이 없으므로 시퀀스에 영향을 주지 않습니다(테이블의 트리거에서 시퀀스를 참조하는 경우에는 이름 변경 후에도 트리거가 동일한 시퀀스를 계속 참조합니다).그러나 이전 테이블 이름을 참조하는 저장 프로시저는 새 테이블 이름을 참조하도록 업데이트해야 합니다.
이제 제약 조건과 트리거는 계속 올바르게 작동하지만 원래 이름은 그대로 유지됩니다.테이블 이름 뒤에 유지 관리할 개체의 이름 지정 규칙이 있는 경우 추가 작업이 필요합니다.를 들어, 테이블에 에 행 하려면 다음과 같이 .FOO
라고 이름 TRG_BI_FOO
테이블 이름을 다음으로 변경합니다.BAR
ALTER TRIGGER trg_bi_foo
RENAME TO trg_bi_bar;
마찬가지로 제약 조건 및 인덱스의 이름을 변경해야 합니다.
ALTER TABLE bar
RENAME CONSTRAINT pk_foo TO pk_bar;
이는 "테이블을 참조하는 외부 키, 제약 조건, 트리거 및 시퀀스가 새 이름을 사용하도록 업데이트됨"이 의미하는 바에 따라 달라집니다.
이름이 변경되는 테이블에 대한 기존 인덱스, 제약 조건 및 트리거는 자동으로 새 이름을 참조합니다.
그러나 이러한 개체에 사용되는 명명 규칙은 자동으로 업데이트된 이름을 사용하지 않습니다.를 들어,주가 어들 키를기, 대본가한에다인 .TABLE_NAME
으로 이름은 으이로붙임름이일반적▁is.TABLE_NAME_PK
바꾸기TABLE_NAME
NEW_TABLE_NAME
키 조건의 으로 " 기키제조건이름다음을자으로않동변습다니지경하본"로 바꾸지 않습니다.NEW_TABLE_NAME_PK
.
확인해야 할 것은 이전 테이블 이름을 참조한 코드(패키지, 프로시저 및 함수)와 이전 테이블 이름을 참조한 트리거입니다.마찬가지로 이전 테이블 이름에 대한 뷰도 끊어집니다. »ALL_DEPENDENCIES
에서는 이러한 개체 중 업데이트해야 하는 개체를 식별할 수 있습니다.
ALTER TABLE oldName RENAME TO newName
테이블의 종속성과 데이터를 보존하지만 잘못된 이전 이름을 참조하는 PL/SQL이 항상 있을 수 있습니다.
언급URL : https://stackoverflow.com/questions/9279492/how-do-i-rename-a-table-in-oracle-so-that-all-foreign-keys-constraints-trigger
'programing' 카테고리의 다른 글
저장 프로시저에서 "반품"을 사용할 수 있습니까? (0) | 2023.07.21 |
---|---|
인덱스별 Python 사전 요소 액세스 (0) | 2023.07.21 |
일시적으로 auto_now / auto_now_add 사용 안 함 (0) | 2023.07.21 |
PEP 8, 키워드 인수 또는 기본 매개 변수 값에서 '=' 주변에 공백이 없는 이유는 무엇입니까? (0) | 2023.07.21 |
HTML 소스에 액세스하는 Python Selenium (0) | 2023.07.21 |