我想创建一个实现分区功能的表,这样如果记录数变为5 + 1则第一个记录被删除例如,如果记录是1,2,3,4,5,我们插入第6个记录然后第一条记录被删除,剩余记录为2,3,4,5,6
答案 0 :(得分:0)
在您Insert
之后,您可以添加以下内容:
delete from mytable
where RecordID <= select(MAX(RecordID)-5 from mytable);
这样就可以删除最近5行之前的所有内容。
答案 1 :(得分:0)
您可以在插入后使用触发器删除多余的行。试试这个例子:
BEGIN TRANSACTION;
SET NOCOUNT ON;
create table t (id int identity(1,1), val char(1))
go
create trigger limit_t on t for insert as
begin
if (select count(*) from t) > 5
delete from t where id <= (select max(id)-5 from t);
end
go
-- insert five rows
insert t (val) values ('a'),('b'),('c'),('d'),('e')
-- insert a sixth and seventh row
insert t (val) values ('f'),('g')
-- retrieve content after last insert
select * from t
-- the table now holds values [c,d,e,f,g]
ROLLBACK TRANSACTION;