pil*_*row 12
扩大对Alex的答案,假设你有一个递增的,不重复的表上连载专栏t命名serial可以用来确定行的相对年龄:
CREATE TRIGGER ten_rows_only AFTER INSERT ON t
BEGIN
DELETE FROM t WHERE serial <= (SELECT serial FROM t ORDER BY serial DESC LIMIT 10, 1);
END;
Run Code Online (Sandbox Code Playgroud)
当你的行数少于10行时,这将无效,而DELETE当INSERT你将行数推到11行时,它将是最低的序列.
UPDATE
这是一个稍微复杂的案例,其中您的表记录列中可能包含重复项的行的"年龄",例如TIMESTAMP跟踪插入时间的列.
sqlite> .schema t
CREATE TABLE t (id VARCHAR(1) NOT NULL PRIMARY KEY, ts TIMESTAMP NOT NULL);
CREATE TRIGGER ten_rows_only AFTER INSERT ON t
BEGIN
DELETE FROM t WHERE id IN (SELECT id FROM t ORDER BY ts DESC LIMIT 10, -1);
END;
Run Code Online (Sandbox Code Playgroud)
在这里我们理所当然地认为我们不能id用来确定相对年龄,所以我们删除了按时间戳排序的前10行之后的所有内容.(SQLite对共享相同的行强制执行任意顺序ts).
| 归档时间: |
|
| 查看次数: |
3690 次 |
| 最近记录: |