---
title: Automate tasks with triggers | Tiger Data Docs
description: Use PostgreSQL triggers to automatically execute functions when data changes occur in TimescaleDB hypertables
---

TimescaleDB supports PostgreSQL triggers on a hypertable the same way you use them on a regular table. When you create, alter, drop, enable, or disable a trigger on a hypertable — including via `ALTER TABLE … ENABLE/DISABLE TRIGGER` with the `ALL`, `USER`, `ALWAYS`, and `REPLICA` variants — TimescaleDB propagates the change to every chunk.

## Create a trigger

This example creates a new table called `error_conditions` with the same schema as `conditions`, but that only stores records which are considered errors. An error, in this case, is when an application sends a `temperature` or `humidity` reading with a value that is greater than or equal to 1000.

1. **Create a function that inserts erroneous data into the `error_conditions` table**

   ```
   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 a trigger that calls this function whenever a new row is inserted into the hypertable**

   ```
   CREATE TRIGGER record_error
     BEFORE INSERT ON conditions
     FOR EACH ROW
     EXECUTE FUNCTION record_error();
   ```

3. **Verify that error rows are captured**

   All data is inserted into the `conditions` table, but rows that contain errors are also added to the `error_conditions` table.

For all supported trigger types and clauses, see the [PostgreSQL `CREATE TRIGGER` docs](https://www.postgresql.org/docs/current/sql-createtrigger.html).

## Limitations

- Triggers are not supported on continuous aggregates.
- `ROW`-level triggers with transition tables are not supported on hypertables.
- `DELETE` triggers with transition tables are not supported.
