我有这个 SQL Server 代理,它创建一个备份表,这样做:
DECLARE @date datetime, @insert_cmd varchar(1000)
SET @date =GETDATE()
set @insert_cmd = 'select * into [tablename_'+CONVERT(varchar(100), @date, 112 )+'] from tableA'
exec (@insert_cmd)
麻烦的是, select * into table 仅在 table 不存在时才有效。有没有办法将其更改为插入 tablename_.... 而无需关心,并在必要时覆盖?
我尝试过使用 sql 检查表是否存在,例如:
IF OBJECT_ID ('tablename', 'U') IS NOT NULL DROP tablename;
问题在于我如何定位这些引号,以便它们可以构建添加到表名的日期/时间?我尝试了一些变体,但没有一个成功:
/* errors with quotations: */
set @del_cmd = 'IF OBJECT_ID ('[tablename_'+CONVERT(varchar(100), @date, 112 )+']', 'U') IS NOT NULL DROP [tablename_'+CONVERT(varchar(100), @date, 112 )+']';