1
Я написал хранимую процедуру, которая разрешает иметь только 100 строк с одинаковыми CustomerPK
, поэтому, если мы хотим вставить строку 101, необходимо удалить самую старую строку с тем же CustomerPK
,Сохраненная процедура для удаления строк - SQL Server 2008 R2
Я уверен, что есть несколько способов сделать это, и я не уверен, какой из них лучше. Вот код процедуры.
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
Почему не просто обновить старую строку, вместо вставки/удаления – EricZ
@EricZ потому что старейшая строка может в некоторых крайних случаях не может быть строка номером 100 –