오늘 내 이상한 일이 생겼습니다. 친구들 (개발자)이 버그라고 말했습니다 ...
보통 PL/SQL에서 테이블의 DDL을보고 싶을 때 테이블을 마우스 오른쪽 버튼으로 클릭하고 뷰를 클릭하면 DDL이 표시됩니다.
그러나 테이블의 DDL을 가져올 수있는 또 다른 방법이 있는데 테이블에서 마우스 오른쪽 버튼을 클릭하여 DBMS_METADATA라는 항목을 클릭하면 커서가 표시되고 DDL이 표시됩니다. 업로드 한 이미지에서 DBMS_METADATA와 'view'의 차이점은 .number 1은 'view'를 나타내고 2는 DBMS_METADATA를 나타내며 둘 사이에 큰 차이가 있음을 알 수 있습니다. 첫 번째 열은 organization_code 열을 보여줍니다. Null이 아니기 때문에 (체크되어 있지 않기 때문에), 두번째 것은 organization_code가 null이라는 것을 보여줍니다. 이로 인해 개발자들은 혼란 스러웠습니다. .하지만 열을 테스트 한 후 null이 아닙니다. 나는 칼럼이 주키라는 것을 언급해야만한다. 왜냐하면 왜 메디아가 잘못 된 정보를 보여준 것이 아니 었는가? 전에 누군가에게 무슨 일이 무엇입니까?
DBMS_METADATA와 다른 점은 '보기'입니다.
1
A
답변
2
1 null 일 수 없습니다 기본 키에 사용되는 열 (그건 내가 11g를 사용하고 있습니다에 의해). 그러나이 제한은 기본 키 제한 조건을 통해서만 적용될 수 있으며 별도의 null이 아닌 제한 조건이 필요하지 않습니다. IDE, PL/SQL Developer는 기본 키 제약 조건과 null 제약 조건이 아닌 일반적으로 더 유용한 조합을 보여줍니다. DBMS_METADATA는 테이블이 어떻게 지정되었는지를 보여 주며, 기본 키를 삭제하지 않는 한 관련이 없습니다.
create table table1(a number not null primary key);
create table table2(a number primary key);
begin
dbms_metadata.set_transform_param(dbms_metadata.session_transform,
'SEGMENT_ATTRIBUTES',false);
end;
/
select dbms_metadata.get_ddl('TABLE', 'TABLE1') from dual;
CREATE TABLE "JHELLER"."TABLE1"
("A" NUMBER NOT NULL ENABLE,
PRIMARY KEY ("A") ENABLE
)
select dbms_metadata.get_ddl('TABLE', 'TABLE2') from dual;
CREATE TABLE "JHELLER"."TABLE2"
( "A" NUMBER,
PRIMARY KEY ("A") ENABLE
)
PL/SQL Developer에서 어느 열도 Nullable이 선택되어 있지 않습니다.
1 매우 드문 novalidated 고유하지 않은 색인을 사용하지 않는 한.
어떤 도구입니까? PL/SQL은 IDE가 아닙니다. 이것은 프로그래밍 언어입니다. – OldProgrammer
@OldProgrammer 스크린 샷을 기반으로하면 PL/SQL Developer입니다. –