如何维护表中的最大记录数。 Postgres的

时间:2016-12-11 16:27:45

标签: postgresql triggers

我有以下问题,我有一个包含外键和创建日期列的表。

在插入新记录时,我需要检查存在多少具有相同外键的记录,如果查询引发的记录超过N条,则必须删除最旧的记录。因此,只有N个记录具有相同的外键。

我可以从应用程序中做到这一点,(我正在做一个REST API),但我认为它不是最佳的,我宁愿直接在SQL中使用Trigger。

例如

+----+----------+------------+
|       TABLE: example       |
+----+----------+------------+
| FK | DATE.... | MORE_FIELD |
+----+----------+------------+
| 01 | 17/12/92 |            |
| 01 | 17/12/93 |            |
| 02 | 17/12/92 |            |
| 01 | 17/12/94 |            |
| 02 | 17/12/93 |            |
| 03 | 17/12/92 |            |
+----+----------+------------+
INSERT INTO example(FK, DATE, MORE_FIELD) VALUES(01,now(), "...");

插入示例后

IF (SELECT count(FK) FROM example WHERE new.FK = example.FK > N) 
THEN DELETE THE OLDEST RECORD;

如果new.FK = 1且N = 3则应在插入后删除寄存器(01 | 17/12/92)

0 个答案:

没有答案