1
J'ai écrit une procédure stockée qui ne pouvait avoir que 100 lignes avec la même CustomerPK
, donc si nous voulons insérer la ligne 101, la plus ancienne ligne avec la même CustomerPK
doit être supprimée .Procédure stockée pour supprimer des lignes - SQL Server 2008 R2
Je suis sûr qu'il y a plusieurs façons de le faire et je ne suis pas sûr lequel est le meilleur. Voici le code de la procédure.
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
Pourquoi ne pas simplement mettre à jour la plus ancienne ligne, au lieu d'insérer/supprimer – EricZ
@EricZ parce que la plus ancienne ligne peut, dans certains cas extrêmes ne pas être le numéro de ligne 100 –