こんにちは、先週、SQL データベースにいくつかのテーブルをアーカイブするように依頼されました。SQL を初めて使用するので、他の質問にいくつかのコードが表示されます。@nextid テーブルを宣言し、UniqueID int を次のコードで説明できる人はいますか。コードは私のものではなく、所有者にクレジットが与えられます。
私の場合、db 呼び出し prod の attachments というテーブルに主キー call attachmentID があり、日付の列は attachmentdate です。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