Timescale 支持全范围的 PostgreSQL 触发器。在超表上创建、更改或删除触发器会将更改传播到所有底层数据块。
此示例创建一个名为 error_conditions
的新表,其模式与 conditions
相同,但仅存储被认为是错误的记录。在本例中,错误是指当应用程序发送的 temperature
或 humidity
读数的值大于或等于 1000 时。
创建一个函数,将错误数据插入到
error_conditions
表中CREATE OR REPLACE FUNCTION record_error()RETURNS trigger AS $record_error$BEGINIF NEW.temperature >= 1000 OR NEW.humidity >= 1000 THENINSERT INTO error_conditionsVALUES(NEW.time, NEW.location, NEW.temperature, NEW.humidity);END IF;RETURN NEW;END;$record_error$ LANGUAGE plpgsql;创建一个触发器,每当新行插入到超表时调用此函数
CREATE TRIGGER record_errorBEFORE INSERT ON conditionsFOR EACH ROWEXECUTE PROCEDURE record_error();所有数据都插入到
conditions
表中,但包含错误的行也会添加到error_conditions
表中。
Timescale 支持全范围的触发器,包括 BEFORE INSERT
、AFTER INSERT
、BEFORE UPDATE
、AFTER UPDATE
、BEFORE DELETE
和 AFTER DELETE
。有关更多信息,请参阅 PostgreSQL 文档。
关键词
在此页面上发现问题?报告问题 或 在 GitHub 上编辑此页面。