您好上周我被要求在 sql db 中存档一些表,我是 SQL 新手,我在其他问题中看到了一些代码。任何人都可以解释声明@nextid 表和UniqueID int 以下代码的内容,该代码不是我的,并且归功于所有者。
在我的情况下,我有一个主键调用附件ID,在数据库调用产品中名为附件的表中,日期列是附件日期。我不确定我是要替换 UniqueID 还是什么?如果可以的话请帮忙。
DECLARE @NextIDs TABLE(UniqueID int primary key)
DECLARE @ThreeYearsAgo datetime
SELECT @ThreeYearsAgo = DATEADD(d, -(3 * 365), GetDate())
WHILE EXISTS(SELECT 1
FROM [ISAdminDB].[dbo].[MyTable]
WHERE [MyTable].[DateTime] < @ThreeYearsAgo)
BEGIN
BEGIN TRAN
INSERT INTO @NextIDs(UniqueID)
SELECT TOP 1000 UniqueID
FROM [ISAdminDB].[dbo].[MyTable]
WHERE [MyTable].[DateTime] < @ThreeYearsAgo
INSERT INTO [ISArchive].[dbo].[MyTable] (<Fields>)
SELECT (<Fields>)
FROM [ISAdminDB].[dbo].[MyTable] AS a
INNER JOIN @NextIDs AS b ON a.UniqueID = b.UniqueID
DELETE [ISAdminDB].[dbo].[MyTable]
FROM [ISAdminDB].[dbo].[MyTable]
INNER JOIN @NextIDs AS b ON a.UniqueID = b.UniqueID
DELETE FROM @NextIDs
COMMIT TRAN
END