Changeset 326 for Version-0.8/import/alkis-functions.sql
- Timestamp:
- 08/28/14 16:45:07 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Version-0.8/import/alkis-functions.sql
r324 r326 180 180 EXECUTE sql; 181 181 182 -- CREATE UNIQUE INDEX vobjekte_gmlid ON vobjekte(gml_id,beginnt);183 -- CREATE INDEX vobjekte_table ON vobjekte(table_name);184 185 182 CREATE VIEW vbeziehungen AS 186 183 SELECT beziehung_von,(SELECT table_name FROM vobjekte WHERE gml_id=beziehung_von) AS typ_von … … 188 185 ,beziehung_zu,(SELECT table_name FROM vobjekte WHERE gml_id=beziehung_zu) AS typ_zu 189 186 FROM alkis_beziehungen; 190 191 -- CREATE INDEX vbeziehungen_von ON vbeziehungen(beziehung_von);192 -- CREATE INDEX vbeziehungen_vontyp ON vbeziehungen(typ_von);193 -- CREATE INDEX vbeziehungen_art ON vbeziehungen(beziehungsart);194 -- CREATE INDEX vbeziehungen_zu ON vbeziehungen(beziehung_zu);195 -- CREATE INDEX vbeziehungen_zutyp ON vbeziehungen(typ_zu);196 187 197 188 RETURN 'ALKIS-Views erzeugt.'; … … 384 375 -- Geaendert 2014-02-03 auf Vorschlag M.B. Krs. Unna 385 376 386 /*387 388 -- Diese Version arbeitet nur korrekt, wenn die Spalte gml_id im Format "character(16)" angelegt ist.389 390 CREATE OR REPLACE FUNCTION delete_feature_kill() RETURNS TRIGGER AS $$391 DECLARE392 query TEXT;393 begsql TEXT;394 aktbeg TEXT;395 gml_id TEXT;396 query_bez TEXT;397 BEGIN398 NEW.typename := lower(NEW.typename);399 NEW.context := lower(NEW.context);400 gml_id := substr(NEW.featureid, 1, 16);401 402 IF NEW.context IS NULL THEN403 NEW.context := 'delete';404 END IF;405 406 IF NEW.context='delete' THEN -- Ersatzloses Loeschen des Objektes407 -- In der Objekt-Tabelle408 EXECUTE 'DELETE FROM ' || NEW.typename || ' WHERE gml_id = ''' || gml_id || '''';409 -- Beziehungen von und zu dem Objekt sind hinfaellig410 EXECUTE 'DELETE FROM alkis_beziehungen WHERE beziehung_von = ''' || gml_id || ''' OR beziehung_zu = ''' || gml_id || '''';411 --RAISE NOTICE 'Lösche gml_id % in % und Beziehungen', gml_id, NEW.typename;412 413 ELSE -- Ersetzen eines Objektes (Replace). In der Objekt-Tabelle sind jetzt bereits 2 Objekte vorhanden (alt und neu).414 -- beginnt-Wert des aktuellen Objektes ermitteln415 begsql := 'SELECT max(beginnt) FROM ' || NEW.typename || ' WHERE gml_id = ''' || substr(NEW.replacedBy, 1, 16) || ''' AND endet IS NULL';416 EXECUTE begsql INTO aktbeg;417 -- Alte Objekte entfernen418 EXECUTE 'DELETE FROM ' || NEW.typename || ' WHERE gml_id = ''' || gml_id || ''' AND beginnt < ''' || aktbeg || '''';419 -- Beziehungen vom alten Objekt entfernen, die aus frueheren Importen stammen420 EXECUTE 'DELETE FROM alkis_beziehungen WHERE beziehung_von = ''' || gml_id || ''' AND import_id < (SELECT max(id) FROM import)';421 END IF;422 423 NEW.ignored := false;424 RETURN NEW;425 END;426 $$ LANGUAGE plpgsql;427 428 */429 430 377 -- 2014-08-27: Anpassung an vereinheitlichtes Datenbank-Schema. 431 378 -- Wenn die Spalte gml_id im Format "character varying" (ohne LÀngenbegrenzung) angelegt wird,
Note: See TracChangeset
for help on using the changeset viewer.