Sql server 如何将6个月或6个月以上的数据移动到另一个表中?
我编写了一个简单的过程来获取6个月或6个月以上的数据并将它们存储在另一个表中Sql server 如何将6个月或6个月以上的数据移动到另一个表中?,sql-server,stored-procedures,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
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
我想知道它是否正确。这很正常,但使用事务更安全
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
正确…….sql server或oracle?oracle没有dateadd,因此这必须是sql server。如果您有大量的行,您可能希望查看delete+输出,以便能够更轻松地成批执行。sql server@KaushikNayakoh,我有125000条记录。没有批处理会更好吗@JamesZI我是初学者,所以我不知道sp中有辅助变量。非常感谢@Leran2002