Sql-Server
計算甚至刪除的行
是否可以計算 SQL Server 表中已刪除的行?
假設我們有一個聯繫人表。
我將添加 5 個新聯繫人,然後點擊計數。它應該返回值5。
現在,當我刪除聯繫人並執行計數時,它將返回4。
由於我正在開發一個
Count-year-NP
從計數中生成唯一數字 ( ) 的應用程序,因此它的通用性對我來說至關重要。我不只是計算數據庫,我的查詢是:
SELECT COUNT(*) FROM some_table WHERE YEAR(now) = YEAR(GETDATE())
它計算目前年份的數據。
有沒有辦法使用儲存過程或類似的方法,只是為了保持刪除和插入行的計數通用?
我正在考慮將行標記為已刪除而不是刪除它們,但我希望能夠刪除這些值。
當您只需要有關插入行數而不是有關記錄數據的資訊時 - 您可以使用我在下面介紹的方法。
當然,您可以將行標記為已刪除,但這需要更改數據查詢。它還會影響資源(儲存,可能是視圖,可能是附加索引,查詢數據時的 CPU)。
解決方案
創建一個表來儲存您感興趣的所有表的計數器。在您的情況下,您應該每年為這些表儲存計數器。
在插入新記錄時更新這些計數器,並在需要生成新的唯一編號時從計數器表中讀取。
計數器表範例:
CREATE TABLE Counters (TableName NVARCHAR(256), [Year] INT, [Value] BIGINT)
評論
計數器更新可以通過觸發器以簡單的方式實現,但您應該注意性能和並發問題。考慮通過應用層或儲存過程更新計數器表,這應該是更好的方法。