sql server数据库表能自动删除行吗?
我用sql server数据表存放一些信息,发现数据库增加速度很快。
能否设置表的大小后,让它自动删除最先的数据。
例如设置表容量为10000行,像队列一样,如果有新数据进来,就删除掉最先的数据。
PS:不想用作业来实现,不知道数据库表是否有这个功能。谢谢~
不用作业,那只有用触发器了,插入的时候判断一下。
其他好像没办法
触发器。。。
触发器。
触发器也不好用 还是用作业比较好
触发器来处理吧
如果规模可控制的话,用作业好些,定时执行。
否则,只能用触发器了。
或者写个JOB定时跑,效率高点
SQL code:
--最多允许3条
CREATE TABLE TB(COL INT)
INSERT TB
SELECT 1 UNION ALL
SELECT 2
GO
CREATE TRIGGER TRIGGER_TB ON TB
INSTEAD OF INSERT
AS
DECLARE @RC INT, @ROWCOUNT INT
SET @ROWCOUNT=@@ROWCOUNT
SET @RC=(SELECT COUNT(*) from TB)
IF @ROWCOUNT+@RC>3
BEGIN
SET @ROWCOUNT=@ROWCOUNT+@RC-3
SET ROWCOUNT @ROWCOUNT
DELETE TB
SET ROWCOUNT 0
END
INSERT TB
SELECT * from INSERTED
GO
INSERT TB
SELECT 3 UNION ALL
SELECT 4
SELECT * from TB
DROP TABLE TB
/*
COL
-----------
3
2
4
*/
用触发器,作业呀,这个我知道。
难道在表设置里没有这个功能吗?
没有这方面的设置
可以尝试使用"数据复制"或"DTS",但本质上和作业区别不大。sql server系列暂时没有楼
相关问答:
小弟是个新手 现在有个问题一直不能解决
例如
procedure produce_proc
@p001 nvarchar(8000),
@p002 nvarchar(8000),
@p003 nvarchar(8000),
& ......
表中按datadate,tradeid为主键,也就是说tradeid会重复出现在不同天中,同一天的tradeid是不同的。现在我希望取一段时间范围内不重复的tradeid,且只要每个tradeid的最后一次出现的那条。sql语句该怎么写
: ......
小弟最近遇到一个问题,要求得出哪个班级的教师待遇最高,把同一个班级的教师待遇合计起来
班级表 教师表
班级ID & ......
SQL code:
select *,cast(bin as decimal(10,2)) as bin2 into #tmp2
from MyTable
where convert(varchar(10),[Time],120) between '2009-07-01' and '2009-10-28 23:59:59'
order by bin2
其中bin ......