Archiv der Kategorie: Postgres

Postgres: Zeilen einer Tabelle als Eingabe (INSERT) für ähnliche Tabelle verwenden (mit CTE)

Tabelle 1 (table1):
Hat die Spalten id, name, language, type

Tabelle 2 (table2):
Hat die Spalten id, name, language, type_id (identisch mit Tabelle 1 „type“)

Alle Zeilen mit dem Wert „fr“ als language sollen von der ersten Tabelle in die zweite Tabelle übernommen werden – mit einem SQL.

SET search_path TO 'public';

WITH 
    addressor_types as (SELECT type as type_id, name, language FROM table1 WHERE language='fr')

INSERT INTO table2 (type_id, name, language) (SELECT type_id, name, language FROM addressor_types);

SET search_path TO … = Setzen des Namensraumes, in dem Postgres sucht (kann weggelassen werden, wenn search_path=public)

WITH … = Common Table Expression (CTE), um die zutreffenden Zeilen der ersten Tabelle zwischenzuspeichern für den INSERT. Die Reihenfolge/Namen der Spalten beim INSERT muss/müssen übereinstimmen.

INSERT … = Der Befehl zum Einfügen der zuvor zwischengespeicherten Daten.

Postgresql: Timestamp bei Aktualisierung updaten (Trigger)

Die Deklaration einer Tabellenspalte mit default Current_Timestamp erzeugt noch kein Update des Timestamps bei einer Änderung in der Zeile.
Erst ein Trigger

CREATE OR REPLACE FUNCTION update_modified_column()
RETURNS TRIGGER AS $$
BEGIN
NEW.modified = now();
RETURN NEW;
END;
$$ language 'plpgsql';

CREATE TRIGGER update_customer_modtime BEFORE UPDATE ON customer FOR EACH ROW EXECUTE PROCEDURE update_modified_column();

Postgres: Ändern Index (Serial/Sequence)

Mit ALTER SEQUENCE … lässt sich eine Sequenz ändern. Soll aber nur der Index auf einen neuen Wert gesetzt werden:

SELECT setval('name_index_id_seq',5000,True);

name_index_id_seq = Name der Sequenz

5000 = nächste ID die vergeben wird

True = Wert wird sofort geändert (man kann einen neuen Index auch angeben und erst mit ALTER SEQUENCE RESTART aktivieren)

Postgresql: pg_top installieren

Um nachzuvollziehen, wo die Resourcen der Postgresql Datenbank verbraucht werden ist das Paket „pgtop“ sehr hilfreich.

Vorher die Repos abgleichen:

Paket installieren:

Zum Aufrufen des Programms (als User postgres):

Als Ausgabe erhält man eine Darstellung wie folgt:
Weiterlesen