2016-06-14 7 views
1

zuerst die folgenden Tabellen in zwei verschiedenen DatenbankenVerwendung Informationsquellen in Vertikal Fragmentation Tabelle in Oracle

Fragment1: 
Employee(EID number(4)PRIMARY KEY, Name varchar2(20),Address varchar2(50)); 

Fragment2: 
Employee(EID number(4),Dep_Id number(4),Mgr_Id REFERENCES Employee(EID),Salary number(6)); 

erstellen und dann einen Trigger erstellen, um Daten in entsprechende Tabelle einfügen.

Ich bin nicht in der Lage BEZUGS Angestellter (EID) verwenden [von Fragment 1] in mgr_id

Bitte Hilfe

Antwort

0

Sie können nicht FK Constraint über dblink implementieren. Sie können einen Trigger schreiben, der die Funktion der FK-Bedingung nachahmt. Etwas wie folgt aus:

Zuerst müssen Sie einen dblink erstellen (zB Fern.)

CREATE OR REPLACE TRIGGER Example 
    AFTER INSERT ON fagment1 
    FOR EACH ROW 
DECLARE 
    cuenta number; 
BEGIN 

    select count(*) 
    into cuenta 
    from [email protected] f2 
    where f2.EID = :new.EID 
    and rownum=1; 

    IF cuenta = 0 then 
    raise_application_error(-20001,'EID: '||:new.EID||' not found'); 
    END IF; 

EXCEPTION 
    WHEN OTHERS THEN --dblink down? 
      raise_application_error(-20001,'EID: '||:new.EID||' not found'); 

END; 
+0

beide Tabellen Server2 werden in verschiedenen Datenbanken erstellt ... so der obige Code funktioniert nicht. –

+0

Ok, habe das nicht gelesen. Ich werde die Antwort aktualisieren – vercelli

+0

können Sie mir sagen, wie der Auslöser sein wird? –