如何将6个月或超过6个月的数据移动到另一个表?

时间:2018-04-06 05:03:49

标签: sql-server stored-procedures

我编写了一个简单的过程来获取6个或6个月以上的数据并将它们存储在另一个表中。

    Create  PROCEDURE Proc_move_tabcustomers

    AS
    BEGIN
    INSERT INTO sample_table_archive(name,age,dob) SELECT name,age,dob FROM sample_table WHERE dob <= dateadd(month, -6, getdate());

    DELETE FROM sample_table where dob <= dateadd(month, -6, getdate());
    END

我想知道它是否正确。

1 个答案:

答案 0 :(得分:1)

这是正常的,但使用交易更安全

BEGIN TRY
  -- start transaction
  BEGIN TRAN

  -- group commands of data modification
  DECLARE @dob date=dateadd(month, -6, getdate()); -- auxiliary variable

  INSERT INTO sample_table_archive(name,age,dob) SELECT name,age,dob FROM sample_table WHERE dob <= @dob;

  DELETE FROM sample_table where dob <= @dob;

  -- save changes
  COMMIT TRAN
END TRY
BEGIN CATCH
  PRINT 'An error has occurred. Transaction canceled'
  -- cancel changes
  ROLLBACK TRAN
END CATCH