我有兩個表格(Users
,DeletedUsers
)和一個觸發器Users_Delete
。刪除用戶記錄時,我想在DeletedUsers
表中存儲該ID和最後一個rowversion
值(在刪除之前)。如何在已有rowversion列的表中存儲rowversion值?
由於SQL不允許在表上使用rowversion
類型的多列,因此我應該如何將LastUserVersion
存儲在DeletedUsers
表中?我應該使用哪種數據類型?
示例代碼:
CREATE TABLE [dbo].[Users] (
[ID] [uniqueidentifier] NOT NULL,
[Name] [nvarchar](100) NOT NULL,
[Version] [rowversion] NOT NULL
)
CREATE TABLE [dbo].[DeletedUsers] (
[ID] [uniqueidentifier] NOT NULL,
[LastUserVersion] [rowversion] NOT NULL, -- ERROR
[Version] [rowversion] NOT NULL
)
CREATE TRIGGER [dbo].[Users_Delete] ON [dbo].[Users]
AFTER DELETE
AS
BEGIN
SET NOCOUNT ON
INSERT INTO [dbo].[DeletedUsers]
(
ObjectID,
LastUserVersion
)
SELECT
ObjectID,
Version
FROM DELETED
SET NOCOUNT OFF
END
假設我在CarOwners和Cars之間有一對多的關係。我想檢索所有'CarOwners',其集合'Cars'在特定的rowversion值後發生了變化(修改,插入,刪除)。如果沒有將'Car'的最後一行存儲在已刪除的表中,那麼'CarOwner'將被排除在結果集之外,如果這是對其集合的唯一更改。 –
嗯..現在我想我不需要它。沒有合理的場景,「DeletedUsers」記錄上的rowversion值會再次遞增,因此我只能使用該表上已存在的rowversion值。 –
是的,這就是爲什麼我想知道你爲什麼要保留它。 –