【发布时间】:2022-01-10 21:42:33
【问题描述】:
我有一个包含两个表的数据库:
- 设备
- 温度
架构如下:
CREATE TABLE IF NOT EXISTS devices(
device_id serial PRIMARY KEY,
device_name varchar(255) UNIQUE NOT NULL,
last_record_time timestamp without time zone DEFAULT '1995-10-30 10:30:00'
);
CREATE TABLE IF NOT EXISTS temperature(
device_id integer NOT NULL,
temperature decimal NOT NULL,
record_time timestamp without time zone NOT NULL,
CONSTRAINT temperature_device_id_fkey FOREIGN KEY (device_id)
REFERENCES devices (device_id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
);
设备表保存所有设备的列表。所以每个设备都有一个唯一的 id。温度表汇总了所有设备的数据。您可以按 device_id 进行选择以查看与特定设备相关的所有条目。
我有不能从设备表中删除的约束,因为温度表依赖于它。我还希望在将新记录插入温度表时更新设备表。
也就是说,温度中新记录的 record_time 应该成为该设备在 devices 表中的条目的 last_record_time。这样我总是知道设备最后一次插入数据是什么时候。
我目前正在以编程方式执行此操作。我插入记录,然后立即选择它们并写入另一个表。这是引入一些错误。因此,我更愿意在数据库级别自动执行此操作。我该如何解决这个问题?
【问题讨论】:
标签: sql postgresql