Timescale 支持全范围的 PostgreSQL 触发器。在超表上创建、更改或删除触发器会将更改传播到所有底层数据块。

此示例创建一个名为 error_conditions 的新表,其模式与 conditions 相同,但仅存储被认为是错误的记录。在本例中,错误是指当应用程序发送的 temperaturehumidity 读数的值大于或等于 1000 时。

  1. 创建一个函数,将错误数据插入到 error_conditions 表中

    CREATE OR REPLACE FUNCTION record_error()
    RETURNS trigger AS $record_error$
    BEGIN
    IF NEW.temperature >= 1000 OR NEW.humidity >= 1000 THEN
    INSERT INTO error_conditions
    VALUES(NEW.time, NEW.location, NEW.temperature, NEW.humidity);
    END IF;
    RETURN NEW;
    END;
    $record_error$ LANGUAGE plpgsql;
  2. 创建一个触发器,每当新行插入到超表时调用此函数

    CREATE TRIGGER record_error
    BEFORE INSERT ON conditions
    FOR EACH ROW
    EXECUTE PROCEDURE record_error();
  3. 所有数据都插入到 conditions 表中,但包含错误的行也会添加到 error_conditions 表中。

Timescale 支持全范围的触发器,包括 BEFORE INSERTAFTER INSERTBEFORE UPDATEAFTER UPDATEBEFORE DELETEAFTER DELETE。有关更多信息,请参阅 PostgreSQL 文档

关键词

在此页面上发现问题?报告问题 或 在 GitHub 上编辑此页面