我有以下问题,我有一个包含外键和创建日期列的表。
在插入新记录时,我需要检查存在多少具有相同外键的记录,如果查询引发的记录超过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)