2012-08-27 2 views
3

OBJECT_TYPEATTRIBUTE varchar2(200)이 있습니다. 이것을 참조하는 많은 다른 객체가 있습니다. 속성의 길이를 varchar2(50)으로 줄여야합니다. 내가 직접 할 수 없어 알고, 그래서 나는이 방법으로 발견결과없이 속성을 삭제/추가 할 수 있습니까? 오라클 객체 유형

ALTER TYPE CUSTOMER DROP ATTRIBUTE name INVALIDATE; 
ALTER TYPE CUSTOMER ADD ATTRIBUTE name varchar2(50) CASCADE; 

질문은 :는 속성의 낙하/생성 한 후 파괴 할 수 있나요이다? DROP 문에 CASCADE 대신 INVALIDATE 옵션을 사용하는 것이 맞습니까? 나는 관계 나 데이터를 잃어 버리고 싶지 않습니다. 유형을 사용하고 유형을 사용하여 정의 된 테이블 및 데이터가 특히 속성을 삭제하는 경우

ALTER TYPE CUSTOMER MODIFY ATTRIBUTE name VARCHAR2(50); 

나는 호환성 문제로 실행 한 :

+0

이 질문에 대한 결론이 나왔습니까? –

답변

0

다음 사용하지 않을 이유가 있나요. 이것이 데이터 유형에 대한 테이블과 뷰를 기반으로하지 않는 이유 중 하나입니다. 길이가 변경되면 연관된 데이터가 50을 초과하는 테이블과 모든 행이 무효화됩니다. 다른 오브젝트가 유형이고 뷰와 테이블에서 사용되지 않으면 위의 변경 유형이 정상적으로 작동해야합니다. 그리고 모든 유형을 다시 컴파일해야 할 수도 있습니다. 유형이 더 제한적으로되고 관련 데이터에 어떤 영향을 미칠 수 있습니다.

+1

예, 있습니다. PLS-00719 : 'string'속성의 속성 만 확장 할 수 있습니다. – karel

관련 문제