试着这段代码.. 声明一个变量,而不是使用强制转换添加GETDATE(),以便表名是唯一的...而不是将现有表中的所有数据插入新的backuptbl i jux中。
begin
declare @st varchar(200);
SET @st = 'tblNameBackup_'+CAST(getdate() as varchar(100));
PRINT @st
create table mytbl -- <<-- i wish to set my table name as @st
(
tID int,
tName nchar(20)
)
select * into mytbl from thet-able-whose-backup-to-be-taken;
end
实际上我希望在每次交易时都备份我的桌子,因此我正在尝试这个...我知道这不是真实的情况(因为如果我们能做到这一点,我也在练习这个)希望你理解我的问题thanx任何帮助
答案 0 :(得分:0)
如果我理解你是正确的,你需要制作动态SQL,然后执行:
类似的东西:
declare @st varchar(200);
SET @st = 'tblNameBackup_'+CAST(getdate() as varchar(100));
EXEC('create table ' + @st + '
(
tID int,
tName nchar(20)
)
select * into mytbl from thet-able-whose-backup-to-be-taken;');
注意注射的可能性,而不仅仅是EXEC,你可以将它包装在sp_executesql或类似的中。这只是为了说明方法。