2016-03-28 20 views
0

おそらくこれは簡単ですが、リレーショナル・デザインをddlとしてエクスポートすると、Oracleが余分なテーブルを作成する理由がわかりません。Oracleがddlエクスポートに余分なテーブルを追加する理由

CREATE TABLE WHY 
(
Col1_ID INTEGER NOT NULL , 
Col2_ID INTEGER NOT NULL 
) ; 
ALTER TABLE WHY ADD CONSTRAINT WHY_PK PRIMARY KEY (Col1_ID, Col2_ID) ; 

Oracleは、このテーブル

CREATE TABLE WHY_JN 
(JN_OPERATION CHAR(3) NOT NULL 
,JN_ORACLE_USER VARCHAR2(30) NOT NULL 
,JN_DATETIME DATE NOT NULL 
,JN_NOTES VARCHAR2(240) 
,JN_APPLN VARCHAR2(35) 
,JN_SESSION NUMBER(38) 
,Col1_ID INTEGER NOT NULL 
,Col2_ID INTEGER NOT NULL 
); 

とDDLファイルのこの

CREATE OR REPLACE TRIGGER WHY_JNtrg 
AFTER 
INSERT OR 
UPDATE OR 
DELETE ON WHY for each row 
Declare 
rec WHY_JN%ROWTYPE; 
blank WHY_JN%ROWTYPE; 
BEGIN 
rec := blank; 
IF INSERTING OR UPDATING THEN 
    rec.Col1_ID := :NEW.Col1_ID; 
    rec.Col2_ID := :NEW.Col2_ID; 
    rec.JN_DATETIME := SYSDATE; 
    rec.JN_ORACLE_USER := SYS_CONTEXT ('USERENV', 'SESSION_USER'); 
    rec.JN_APPLN := SYS_CONTEXT ('USERENV', 'MODULE'); 
    rec.JN_SESSION := SYS_CONTEXT ('USERENV', 'SESSIONID'); 
    IF INSERTING THEN 
    rec.JN_OPERATION := 'INS'; 
    ELSIF UPDATING THEN 
    rec.JN_OPERATION := 'UPD'; 
    END IF; 
ELSIF DELETING THEN 
    rec.Col1_ID := :OLD.Col1_ID; 
    rec.Col2_ID := :OLD.Col2_ID; 
    rec.JN_DATETIME := SYSDATE; 
    rec.JN_ORACLE_USER := SYS_CONTEXT ('USERENV', 'SESSION_USER'); 
    rec.JN_APPLN := SYS_CONTEXT ('USERENV', 'MODULE'); 
    rec.JN_SESSION := SYS_CONTEXT ('USERENV', 'SESSIONID'); 
    rec.JN_OPERATION := 'DEL'; 
END IF; 
INSERT into WHY_JN VALUES rec; 
END; 
/

トップを追加しました:ファイルの

-- Generated by Oracle SQL Developer Data Modeler 4.1.3.901 
-- at:  2016-03-28 19:37:37 EDT 
-- site:  Oracle Database 11g 
-- type:  Oracle Database 11g 

ボトムを

-- Oracle SQL Developer Data Modeler Summary Report: 
-- 
-- CREATE TABLE       1 
-- CREATE INDEX        0 
-- ALTER TABLE        3 
-- CREATE VIEW        0 
-- ALTER VIEW        0 
-- CREATE PACKAGE       0 
-- CREATE PACKAGE BODY      0 
-- CREATE PROCEDURE       0 
-- CREATE FUNCTION       0 
-- CREATE TRIGGER       3 
-- ALTER TRIGGER       0 
-- CREATE COLLECTION TYPE     0 
-- CREATE STRUCTURED TYPE     0 
-- CREATE STRUCTURED TYPE BODY    0 
-- CREATE CLUSTER       0 
-- CREATE CONTEXT       0 
-- CREATE DATABASE       0 
-- CREATE DIMENSION       0 
-- CREATE DIRECTORY       0 
-- CREATE DISK GROUP      0 
-- CREATE ROLE        0 
-- CREATE ROLLBACK SEGMENT     0 
-- CREATE SEQUENCE       0 
-- CREATE MATERIALIZED VIEW     0 
-- CREATE SYNONYM       0 
-- CREATE TABLESPACE      0 
-- CREATE USER        0 
-- 
-- DROP TABLESPACE       0 
-- DROP DATABASE       0 
-- 
-- REDACTION POLICY       0 
-- 
-- ORDS DROP SCHEMA       0 
-- ORDS ENABLE SCHEMA      0 
-- ORDS ENABLE OBJECT      0 
-- 
-- ERRORS         0 
-- WARNINGS         0 

誰かが私にこの点についての公式の参考文献を指摘できるかどうかは分かります。

+0

私の経験では、Oracleデータベースでは、余分なテーブルやトリガを追加していません。これらのテーブルはどのように作成されましたか?使用しているOracleのバージョンは何ですか?その他の製品は関与していますか? –

+0

@BobJarvisまず、Oracle Data Modelerを使用してから、DDLファイルをエクスポートしました。 Oracle 11g。その他の製品は含まれていません。 – hello

+0

そして、Oracle Data Modelerの出力には何がありましたか?WHY表の定義か、それに他のものも含まれていましたか? –

答えて

1

テーブルWHYの内部で何が起こるかをトレースするために、テーブルWHY_JNが表示されます。 マニュアルで設定を確認してください。

関連する問題