0

こんにちは、先週、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
4

1 に答える 1

0

@NextIDs はテーブル変数です。ここで、データは isadmin mytable からテーブル変数 @NextIDs に移動され、次に @NextIDs から isarchive mytable に移動されました。その後、isadmin mytable データは削除されました。

于 2013-01-26T10:41:11.300 に答える