我编写了一个简单的过程来获取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
我想知道它是否正确。
答案 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