1
我有這樣的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)
麻煩的是,選擇*到如果表中不存在的表纔有效。有沒有辦法改變這個插入表名_....而不必關心,如果需要覆蓋?
我試圖尋找在使用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)+']';
沒有這樣的語法。爲什麼不能說'DECLARE @sql NVARCHAR(MAX); IF OBJECT_ID('tablename_'+ CONVERT ...)不是NULL BEGIN SET @sql = N'DROP TABLE tablename_'+ CONVERT ...; EXEC sp_executesql @sql; END'? –
@AaronBertrand,完美,我怎麼能把這個標記爲答案?謝謝! – russds
您可以自行解決問題的代碼。我會爲它投票。 –