Anzeige:
Ergebnis 1 bis 3 von 3

Thema: Hilfe bei Postgresql-Trigger

  1. #1
    Registrierter Benutzer
    Registriert seit
    06.03.2005
    Beiträge
    41

    Question Hilfe bei Postgresql-Trigger

    Hallo

    Ich versuche vergeblich einen Trigger zu erstellen.

    IST-Zustand:
    - eine Datenbank TestDB
    - eine Tabelle TestTab
    - zwei Spalten "datum" (date) und "uhrzeit" (time)
    - eine Spalte "unixts" (Char)
    - über psql copy ... importiere ich eine CSV-Datei (enthält datum und uhrzeit)in die Tabelle

    Wunsch:
    Für jeden neuen Datensatz soll über einen Trigger aus datum und uhrzeit der Unix-Zeitstempel errechnet und in die Spalte unixts eingetragen werden. Das Erzeugen des Zeitstempels habe ich soweit im Griff. Nur wie muß die Triggerfunktion und der Trigger definiert werden. Geht das mit Copy gar nicht, sondern nur mit einzelnen Inserts pro Datensatz?
    Braucht man dafür einen Trigger oder gibt es eine bessere Lösung?

    Mir fehlt da ein Ansatz.

    MfG
    rk

  2. #2
    Registrierter Benutzer
    Registriert seit
    06.03.2005
    Beiträge
    41
    Moin

    Drüber schlafen hat doch geholfen. Der Trigger funktioniert jetzt und reagiert wider Erwarten auch auf den Copy-Befehl.

  3. #3
    Registrierter Benutzer
    Registriert seit
    06.03.2005
    Beiträge
    41
    Hallo

    Muß das Thema leider wieder ausgraben. Die Tabelle hat mittlerweile 700.000 Datensätze. Mir ist aufgefallen, daß der tägliche COPY-Befehl, um die neuen Datensätze in die Tabelle zu kopieren immer mehr Laufzeit benötigt. Ich vermute das die Triggerfunktion schuld ist. Die Funktion ist:

    Code:
    DECLARE
       aktoid oid;
    
       BEGIN
    
     	aktoid = NEW.oid;
    
    	update Testtabelle set unixts=(select extract(epoch from (select to_timestamp(datum||uhrzeit,'DD.MM.YYYYHH24:MI:SS') from Testtabelle where oid=aktoid))) where oid=aktoid;  
            
    	RETURN NEW;
    
        END;
    Ich denke die Suche nach dem Datensatz mit der aktuellen OID ist hier die Bremse. Die OID ist die PostgreSQL eigene. Ich erzeuge selbst keine. Eigentlich müßte doch der aktuelle Datensatz bekannt sein, wenn der Trigger nach einem INSERT auslöst.
    Kann mir jemand einen Optimierungstip geben oder eine alternative Funktion?

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •