私は助言hereに従って、時系列データを格納するための垂直に分割されたテーブルを作成しようとしています。PostgreSQLがテーブルとインサートのトリガーを継承しました
これまでのところ、私のスキーマは次のようになります。
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);
は、今私はイベントがevents
テーブルの上に挿入することができるようINSTEAD OF INSERT
トリガーを作成しようとしていると行が右側のサブになってしまいます-表。しかし、ドキュメントがINSTEAD OF INSERT
トリガーがビューのみではなく、テーブル(またはサブテーブル)に作成することができると述べている:
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.
これを行うための正しい方法は何ですか?
子テーブルを作成するときに 'INHERITS'節を忘れてしまったようです。 –
正直、ありがとう、編集されました。 – Tom