Tiger Cloud: Performance, Scale, Enterprise, Free
Self-hosted products
MST
Constraints are rules that apply to your database columns. This prevents you from entering invalid data into your database. When you create, change, or delete constraints on your hypertables, the constraints are propagated to the underlying chunks, and to any indexes.
Hypertables support all standard Postgres constraint types. For foreign keys in particular, the following is supported:
- Foreign key constraints from a hypertable referencing a regular table
- Foreign key constraints from a regular table referencing a hypertable
Foreign keys from a hypertable referencing another hypertable are not supported.
For example, you can create a table that only allows positive device IDs, and non-null temperature readings. You can also check that time values for all devices are unique. To create this table, with the constraints, use this command:
CREATE TABLE conditions (time TIMESTAMPTZtemp FLOAT NOT NULL,device_id INTEGER CHECK (device_id > 0),location INTEGER REFERENCES locations (id),PRIMARY KEY(time, device_id)) WITH (tsdb.hypertable);
When you create a hypertable using CREATE TABLE ... WITH ..., the default partitioning
column is automatically the first column with a timestamp data type. Also, TimescaleDB creates a
columnstore policy that automatically converts your data to the columnstore, after an interval equal to the value of the chunk_interval, defined through compress_after in the policy. This columnar format enables fast scanning and
aggregation, optimizing performance for analytical workloads while also saving significant storage space. In the
columnstore conversion, hypertable chunks are compressed by up to 98%, and organized for efficient, large-scale queries.
You can customize this policy later using alter_job. However, to change after or
created_before, the compression settings, or the hypertable the policy is acting on, you must
remove the columnstore policy and add a new one.
You can also manually convert chunks in a hypertable to the columnstore.
This example also references values in another locations table using a foreign
key constraint.
Note
Time columns used for partitioning must not allow NULL values. A
NOT NULL constraint is added by default to these columns if it doesn't already exist.
For more information on how to manage constraints, see the
Postgres docs.
Keywords
Found an issue on this page?Report an issue or Edit this page
in GitHub.