Timescale Cloud:性能、扩展性、企业级
自托管产品
MST
约束是适用于数据库列的规则。这可以防止您向数据库输入无效数据。当您创建、更改或删除超表上的约束时,这些约束会传播到底层分块以及任何索引。
超表支持所有标准的 PostgreSQL 约束类型。特别是对于外键,支持以下类型:
- 从超表引用普通表的外键约束
- 从普通表引用超表的外键约束
**不支持**从一个超表引用另一个超表的外键。
例如,您可以创建一个只允许正数设备 ID 和非空温度读数的表。您还可以检查所有设备的时间值是否唯一。要创建带有这些约束的表,请使用以下命令:
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,tsdb.partition_column='time');
如果您正在自托管 TimescaleDB v2.19.3 及更早版本,请创建一个 PostgreSQL 关系表,然后使用 create_hypertable 将其转换。然后通过调用 ALTER TABLE 启用 Hypercore。
此示例还使用外键约束引用了另一个 locations
表中的值。
注意
用于分区的时间列不能允许 NULL
值。如果这些列尚不存在 NOT NULL
约束,则默认会添加该约束。
有关如何管理约束的更多信息,请参阅 PostgreSQL 文档。
关键词