我不希望记录超过15个。
方案: 保存新记录。如果它是16的记录号。要删除的第一条记录。 如何删除第一条记录?可以自动完成吗?
答案 0 :(得分:0)
如果它是实体框架,并且您想在此处使用基本规则,那么
假设您的对象是人,其集合称为人
context.people.count()
if(context.people.count()>15)
people firstperson = context.people.OrderBy(x=>x.ID).First() or if you have date inserted or added you can use
,请在里面and pick the first element. Make sure you order it in correct way using
OrderBy or
OrderByDescending` context.remove(firstperson)
context.add(new person())
醇>
如果您在空表中执行此操作,您的ID将会增加,但您可以安全地按ID顺序删除,并在每次删除时选择最少的一个。
答案 1 :(得分:0)
与AS ( 选择TOP 1 * 来自MyTable ) 从A中删除
与INSERT,UPDATE或DELETE一起使用的TOP表达式中引用的行不按任何顺序排列。
因此,您最好使用带有ORDER BY子句的WITH decision,这样您就可以更准确地指定您认为哪一行是第一行。
答案 2 :(得分:0)
这使用触发器和标识列来确保只有最近插入的15个行保留在表中。
CREATE TABLE MyTable
(
rowID INT IDENTITY(1,1) PRIMARY KEY
,MyColumn VARCHAR(255) NOT NULL
)
GO
CREATE TRIGGER TG_MyTable_Only15
ON MyTable
AFTER INSERT
AS
BEGIN
WITH
t1
(
rowID
)
AS
(
SELECT TOP 15
rowID
FROM MyTable
ORDER BY rowID DESC
)
DELETE FROM MyTable
WHERE rowID NOT IN (SELECT rowID FROM t1)
END
GO