Ignore:
Timestamp:
01/27/13 16:43:12 (11 years ago)
Author:
j.e.fischer
Message:

Verbesserungen am Löschtrigger

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/data/konvert/postnas_0.7/alkis-trigger-hist-oracle.sql

    r210 r211  
    9090        END IF; 
    9191 
     92        IF beginnt IS NULL THEN 
     93                IF :NEW.context = 'delete' OR :NEW.safetoignore = 'true' THEN 
     94                        dbms_output.put_line('Kein Beginndatum fuer Objekt ' || alt_id || ' gefunden.'); 
     95                        :NEW.ignored := 'true'; 
     96                        RETURN; 
     97                ELSE 
     98                        raise_application_error(-20100, 'Kein Beginndatum fuer Objekt ' || alt_id || ' gefunden.'); 
     99                END IF; 
     100        END IF; 
     101 
    92102        IF :NEW.context='delete' THEN 
    93103                SELECT to_char(sysdate, 'YYYY-MM-DD"T"HH24:MI:SS"Z"') INTO endete FROM dual; 
     
    130140                                INTO endete; 
    131141                END IF; 
     142 
     143                IF alt_id<>neu_id THEN 
     144                        dbms_output.put_line('Objekt ' || alt_id || ' wird durch Objekt ' || neu_id || ' ersetzt.'); 
     145                END IF; 
     146 
     147                IF endete IS NULL THEN 
     148                        dbms_output.put_line('Kein Beginndatum fuer Objekt ' || neu_id || '.'); 
     149                END IF; 
     150 
     151                IF endete IS NULL OR beginnt=endete THEN 
     152                        raise_application_error(-20100, 'Objekt ' || alt_id || ' wird durch Objekt ' || neu_id || ' ersetzt (leere Lebensdauer?).'); 
     153                END IF; 
    132154        ELSE 
    133155                raise_application_error(-20100, :NEW.featureid || ': UngÃŒltiger Kontext ' || :NEW.context || '''delete'' oder ''replace'' erwartet).'); 
    134         END IF; 
    135  
    136         IF alt_id<>neu_id THEN 
    137                 dbms_output.put_line('Objekt ' || alt_id || ' wird durch Objekt ' || neu_id || ' ersetzt.'); 
    138         END IF; 
    139  
    140         IF beginnt IS NULL THEN 
    141                 dbms_output.put_line('Kein Beginndatum fuer Objekt ' || alt_id || '.'); 
    142         END IF; 
    143  
    144         IF endete IS NULL THEN 
    145                 dbms_output.put_line('Kein Beginndatum fuer Objekt ' || neu_id || '.'); 
    146         END IF; 
    147  
    148         IF beginnt IS NULL OR endete IS NULL OR beginnt=endete THEN 
    149                 raise_application_error(-20100, 'Objekt ' || alt_id || ' wird durch Objekt ' || neu_id || ' ersetzt (leere Lebensdauer?).'); 
    150156        END IF; 
    151157 
     
    163169                        :NEW.ignored := 'true'; 
    164170                        RETURN; 
     171                ELSIF n=0 THEN 
     172                        EXECUTE IMMEDIATE 'SELECT endet FROM ' || :NEW.typename || 
     173                                ' WHERE gml_id=''' || alt_id || '''' || 
     174                                ' AND beginnt=''' || beginnt || '''' 
     175                                INTO endete; 
     176 
     177                        IF NOT endete IS NULL THEN 
     178                                dbms_output.put_line( :NEW.featureid || ': Objekt bereits ' || endete || ' untergegangen - ignoriert' ); 
     179                        ELSE 
     180                                dbms_output.put_line( :NEW.featureid || ': Objekt nicht gefunden - ignoriert' ); 
     181                        END IF; 
     182 
     183                        :NEW.ignored := 'true'; 
     184                        RETURN; 
    165185                ELSE 
    166186                        raise_application_error(-20100, :NEW.featureid || ': Untergangsdatum von ' || n || ' Objekten statt nur einem auf ' || endete || ' gesetzt - Abbruch' ); 
     
    169189 
    170190        :NEW.ignored := 'false'; 
    171         RETURN; 
    172191END delete_feature_trigger; 
    173192/ 
Note: See TracChangeset for help on using the changeset viewer.