Ich versuche, den Ratschlag here zu folgen, um eine vertikal partitionierte Tabelle zum Speichern von Zeitreihendaten zu erstellen.PostgreSQL geerbt Tabelle und Einfügen von Triggern
Bisher mein Schema wie folgt aussieht:
CREATE TABLE events
(
topic text,
t timestamp,
value integer,
primary key(topic, t)
);
CREATE TABLE events_2014
(
primary key (topic, t),
check (t between '2014-01-01' and '2015-01-01')
) INHERITS (events);
Jetzt so versuche ich, einen INSTEAD OF INSERT
Auslöser zu schaffen, dass die Ereignisse auf der events
Tabelle eingefügt werden können, und die Zeile wird in dem rechten Unter Ende -Tabelle. Aber die Dokumentation sagt, dass INSTEAD OF INSERT
Trigger können nur auf Ansichten erstellt werden, keine Tabellen (oder Unter-Tabellen):
CREATE OR REPLACE FUNCTION insert_events() RETURNS TRIGGER AS $insert_events$ BEGIN
IF new.t between '2014-01-01' and '2015-01-01' THEN
INSERT INTO events_2014 SELECT new.*;
...
END IF
RETURN NULL;
END;
$insert_events$ LANGUAGE PLPGSQL;
CREATE TRIGGER insert_events INSTEAD OF INSERT ON events FOR EACH ROW EXECUTE PROCEDURE insert_events();
ERROR: "events" is a table
DETAIL: Tables cannot have INSTEAD OF triggers.
Was ist der richtige Weg, dies zu tun?
Sie scheinen beim Erstellen einer untergeordneten Tabelle die Klausel "INHERITS" vergessen zu haben. –
Ganz richtig, danke, jetzt bearbeitet. – Tom