我编写了一个存储过程,它只允许有 100 行相同的行CustomerPK
,所以如果我们要插入第 101 行,则CustomerPK
需要删除最旧的相同行。
我确信有几种方法可以做到这一点,但我不确定哪一种最好。这是该过程的代码。
DECLARE
@TokenCount INT;
SELECT
@TokenCount = COUNT(*)
FROM
CustomerAuthTokens
WHERE
CustomerPK = @CustomerPK;
IF @TokenCount > 99
BEGIN
DELETE FROM CustomerAuthTokens
WHERE AuthToken IN (SELECT TOP(@TokenCount - 99) AuthToken
FROM CustomerAuthTokens
WHERE CustomerPK = @CustomerPK
ORDER BY TokenCreateTime ASC);
END