Tabelle bei Erstellung mit festgelegten Daten füllen

Tom.S

Fleissiger Benutzer
Beiträge
62
Hallo,
in einem recht großen Datenbankprojekt möchte ich manche Tabellen mit bestimmten Werten gefüllt wissen.
Z. B. habe ich eine feste Liste mit Straßennamen, die in die strassen-Tabelle zusammen mit ihrer Länge gespeichert werden sollen.

Diese strassen-Tabellendaten sollen aber jedes truncate überstehen, bzw. danach sofort automatisch neu gefüllt werden, genauso soll sie beim Sichern und Einspielen der reinen Tabellenstrukturdaten sofort gefüllt werden.

Geht das?

PS. Ein Enum-Type kommt nicht in Frage.
 
Werbung:
Truncate ist truncate. Du kannst via Trigger / Rules aber ein truncate verhindern.

Du kannst die Tabelle in das Template packen, dann ist diese in allen später neu erstellten Datenbanken, die das Templatre nutzen, schon drin.
 
Werbung:
Ich wollte hier noch meine Lösung nachtragen. Vielleicht ist sie mal jemandem von Nutzen:

Es funktioniert doch relativ einfach, eine Tabelle nach einem Truncate mit festen Werten zu füllen: Mit einem AFTER TRUNCATE Trigger:
Code:
CREATE TRIGGER insert_sprachen_trigger
  AFTER TRUNCATE
  ON global.spr_sprache
  FOR EACH STATEMENT
  EXECUTE PROCEDURE global.insert_sprachen_func();
und einer zugehörigen Funktion, in die die Daten fest kodiert werden:
Code:
CREATE OR REPLACE FUNCTION global.insert_sprachen_func()
  RETURNS trigger AS
$BODY$
BEGIN

INSERT INTO global.spr_sprache(
             spr_sprache)
    VALUES ('Altgriechisch');
INSERT INTO global.spr_sprache(
             spr_sprache)
    VALUES ('Arabisch');
INSERT INTO global.spr_sprache(
             spr_sprache)
    VALUES ('Deutsch');
INSERT INTO global.spr_sprache(
             spr_sprache)
    VALUES ('Englisch');
RETURN NULL;
END;

$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
 
Zurück
Oben