クエリでテーブルに行を挿入したいのですが、単純なことはわかっていますが、テーブルに 5 行を超えてはならないというシナリオです。テーブルに5行以上ある場合、古い行を削除する必要があります(または新しい行に置き換えます)(挿入タイムスタンプに基づいて)、新しい行を挿入する必要があります.行数が5未満の場合、直接できます行を挿入します。
クエリを共有してください。
ここにあるコードの一部は疑似コードです (スキーマを作成したわけではありません) が、独自のコードを完成させる必要がある場所を記述しました。
DECLARE @NumberOfRowsToInsert INT = -- select from the data you want to insert
DECLARE @MaxNumberOfRows INT = 5
DECLARE @NumberOfExistingRows INT
DECLARE @Query VARCHAR(MAX) = 'SELECT TOP @rows id FROM SomeTable ORDER BY createdDate ASC'
SELECT @NumberOfExistingRows = COUNT(*)
FROM SomeTable
SET @Query = REPLACE(@Query,'@rows',
CAST(@NumberOfRowsToInsert - (@MaxNumberOfRows - @NumberOfExistingRows))) AS VARCHAR(1))
CREATE TABLE #IdsToDelete(id INT PRIMARY KEY)
INSERT INTO #IdsToDelete
EXEC(@Query)
DELETE FROM SomeTable
WHERE id IN (SELECT * FROM #IdsToDelete)
-- insert here..