2017-04-12 3 views
1

SQL Developer를 사용하여 오라클 데이터베이스에서 DDL을 생성하는 몇 가지 옵션을 시도했지만 목적에 맞지 않았습니다.외래 키를 포함하도록 Oracle Sql Developer로 DDL 생성

빠른 DDL 옵션은 외래 키 제약 조건없이 DDL을 생성합니다. 형식이 마음에 들다.

Edit on table은 제거 할 수없는 저장 공간과 로깅을 포함하여 DDL로 나타납니다.

누구나 SQL Developer를 사용하여 DDL을 생성하는 더 좋은 방법이 있습니까? 물론 완전히 주관적이다 -

감사

+1

DBMS_METADATA.GET_DDL sqldev 빠른 DDL을 위해 그 빠른 DDL 작업 – OldProgrammer

+1

@OldProgrammer, 오른쪽, 외부 키를 생성 포함에 대한 옵션이 없다? 곧 추가 할 계획이 있습니까? 그것은 매우 유용 할 것입니다. 감사 – thatjeffsmith

답변

3

는 빠른 DDL은 우리가 적절하다 생각하여 수행, 환경 설정의 어떤 종류를 사용하지 않습니다.

그러나 트리의 개체에 대한 SQL 페이지로 이동하면 환경 설정> 데이터베이스> 내보내기에 설정된 환경 설정에 따라 DDL이 생성됩니다.

enter image description here

버전 4.2를 들어, 당신은 또한 워크 시트에 DDL 명령을 사용할 수 있습니다. 그리고 SET DDL을 사용하여 생성 할 DDL 유형을 해제하거나 해제 할 수 있습니다.

SET DDL PRETTY ON; 
SET DDL CONSTRAINTS ON; 
SET DDL REF_CONSTRAINTS ON; 
SET DDL PARTITIONING ON; 
SET DDL TABLESPACE OFF; 
SET DDL SEGMENT_ATTRIBUTES OFF; 
SET DDL STORAGE OFF; 

DDL EMPLOYEES 

DDL Option CONSTRAINTS on 
DDL Option REF_CONSTRAINTS on 
DDL Option PARTITIONING on 
DDL Option TABLESPACE off 
DDL Option SEGMENT_ATTRIBUTES off 
DDL Option STORAGE off 
DDL Option STORAGE off 
    CREATE TABLE "HR"."EMPLOYEES" 
    ( "EMPLOYEE_ID" NUMBER(6,0), 
    "FIRST_NAME" VARCHAR2(20), 
    "LAST_NAME" VARCHAR2(25) CONSTRAINT "EMP_LAST_NAME_NN" NOT NULL ENABLE, 
    "EMAIL" VARCHAR2(25) CONSTRAINT "EMP_EMAIL_NN" NOT NULL ENABLE, 
    "PHONE_NUMBER" VARCHAR2(20), 
    "HIRE_DATE" DATE CONSTRAINT "EMP_HIRE_DATE_NN" NOT NULL ENABLE, 
    "JOB_ID" VARCHAR2(10) CONSTRAINT "EMP_JOB_NN" NOT NULL ENABLE, 
    "SALARY" NUMBER(8,2), 
    "COMMISSION_PCT" NUMBER(2,2), 
    "MANAGER_ID" NUMBER(6,0), 
    "DEPARTMENT_ID" NUMBER(4,0), 
    CONSTRAINT "EMP_SALARY_MIN" CHECK (salary > 0) ENABLE, 
    CONSTRAINT "EMP_EMAIL_UK" UNIQUE ("EMAIL") 
    USING INDEX ENABLE, 
    CONSTRAINT "EMP_EMP_ID_PK" PRIMARY KEY ("EMPLOYEE_ID") 
    USING INDEX ENABLE, 
    CONSTRAINT "EMP_DEPT_FK" FOREIGN KEY ("DEPARTMENT_ID") 
     REFERENCES "HR"."DEPARTMENTS" ("DEPARTMENT_ID") ENABLE, 
    CONSTRAINT "EMP_JOB_FK" FOREIGN KEY ("JOB_ID") 
     REFERENCES "HR"."JOBS" ("JOB_ID") ENABLE, 
    CONSTRAINT "EMP_MANAGER_FK" FOREIGN KEY ("MANAGER_ID") 
     REFERENCES "HR"."EMPLOYEES" ("EMPLOYEE_ID") ENABLE 
    ) ; 
    COMMENT ON COLUMN "HR"."EMPLOYEES"."EMPLOYEE_ID" IS 'Primary key of employees table.'; 
    COMMENT ON COLUMN "HR"."EMPLOYEES"."FIRST_NAME" IS 'First name of the employee. A not null column.'; 
    COMMENT ON COLUMN "HR"."EMPLOYEES"."LAST_NAME" IS 'Last name of the employee. A not null column.'; 
    COMMENT ON COLUMN "HR"."EMPLOYEES"."EMAIL" IS 'Email id of the employee'; 
    COMMENT ON COLUMN "HR"."EMPLOYEES"."PHONE_NUMBER" IS 'Phone number of the employee; includes country code and area code'; 
    COMMENT ON COLUMN "HR"."EMPLOYEES"."HIRE_DATE" IS 'Date when the employee started on this job. A not null column.'; 
    COMMENT ON COLUMN "HR"."EMPLOYEES"."JOB_ID" IS 'Current job of the employee; foreign key to job_id column of the 
jobs table. A not null column.'; 
    COMMENT ON COLUMN "HR"."EMPLOYEES"."SALARY" IS 'Monthly salary of the employee. Must be greater 
than zero (enforced by constraint emp_salary_min)'; 
    COMMENT ON COLUMN "HR"."EMPLOYEES"."COMMISSION_PCT" IS 'Commission percentage of the employee; Only employees in sales 
department elgible for commission percentage'; 
    COMMENT ON COLUMN "HR"."EMPLOYEES"."MANAGER_ID" IS 'Manager id of the employee; has same domain as manager_id in 
departments table. Foreign key to employee_id column of employees table. 
(useful for reflexive joins and CONNECT BY query)'; 
    COMMENT ON COLUMN "HR"."EMPLOYEES"."DEPARTMENT_ID" IS 'Department id where employee works; foreign key to department_id 
column of the departments table'; 
    COMMENT ON TABLE "HR"."EMPLOYEES" IS 'employees table. Contains 107 rows. References with departments, 
jobs, job_history tables. Contains a self reference.'; 
    CREATE INDEX "HR"."EMP_DEPARTMENT_IX" ON "HR"."EMPLOYEES" ("DEPARTMENT_ID") 
    ; 
    CREATE INDEX "HR"."EMP_JOB_IX" ON "HR"."EMPLOYEES" ("JOB_ID") 
    ; 
    CREATE INDEX "HR"."EMP_MANAGER_IX" ON "HR"."EMPLOYEES" ("MANAGER_ID") 
    ; 
    CREATE INDEX "HR"."EMP_NAME_IX" ON "HR"."EMPLOYEES" ("LAST_NAME", "FIRST_NAME") 
    ; 
    CREATE INDEX "HR"."EMP_NAME_UPPER" ON "HR"."EMPLOYEES" (UPPER("LAST_NAME")) 
    ; 
    CREATE OR REPLACE EDITIONABLE TRIGGER "HR"."UPDATE_JOB_HISTORY" 
    AFTER UPDATE OF job_id, department_id ON employees 
    FOR EACH ROW 
BEGIN 
    add_job_history(:old.employee_id, :old.hire_date, sysdate, 
        :old.job_id, :old.department_id); 
END; 
/
ALTER TRIGGER "HR"."UPDATE_JOB_HISTORY" DISABLE; 
    CREATE OR REPLACE EDITIONABLE TRIGGER "HR"."SECURE_EMPLOYEES" 
    BEFORE INSERT OR UPDATE OR DELETE ON employees 
BEGIN 
    secure_dml; 
END secure_employees; 
/
ALTER TRIGGER "HR"."SECURE_EMPLOYEES" DISABLE; 
+0

의 외부 세대 DDL을 사용하는 것입니다 – Justin