Sql-Server

計算甚至刪除的行

  • February 15, 2018

是否可以計算 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)

評論

計數器更新可以通過觸發器以簡單的方式實現,但您應該注意性能和並發問題。考慮通過應用層或儲存過程更新計數器表,這應該是更好的方法。

引用自:https://dba.stackexchange.com/questions/197993