2016-09-27 30 views
0

我的任務是將列添加到特定位置的表中。SQL Server在刪除/創建表序列期間插入

CREATE TABLE dbo.[Tmp_SomeTableName] 
(
some schema 
) 

INSERT INTO dbo.[Tmp_SomeTableName] 
(
SELECT [New column order here] from dbo.[SomeTableName] 
) 

DROP TABLE dbo.[SomeTableName] 

EXECUTE sp_rename N'dbo.[Tmp_SomeTableName]', N'SomeTableName','OBJECT' 

我的問題很簡單,什麼都會做MSSQL與

INSERT INTO dbo.[SomeTableName] 

而表重建正在進行中?它會插入並在重建結束時發送它們嗎?或者我應該期待sql異常(並且未能插入數據)?

注意:平均而言,有問題的表格每分鐘可看到約20個插入點的流量。沒有更新查詢在表上運行,並且< 5選擇查詢每小時

+1

如果這是用於家庭作業或研發的罰款,但如果這是針對任何您打算使用請停止並重新評估您解決此問題的方式。動態添加列到Sql Server數據庫在如此多的級別上是錯誤的,並且此功能的有效用例很少。考慮添加一個新表,並將該鍵存儲在列中的一個值和一個值中,以便您可以簡單地向該表中添加另一行,而不是即時修改表。 –

+0

列順序只是一個視覺事物。爲什麼你需要重新排列列?沒有合理的理由,除非你使用'SELECT *'並以列順序爲依據,否則你需要對列進行重新排序 - 這是非常糟糕的事情。 –

回答

0

由於該表不存在,您將收到SQL例外。您的SQL腳本/ procs無法知道該表處於'limbo'狀態,只要他們擔心該表不存在並且是錯誤的。

編輯:可以插入一個視圖,所以你可以做以下事情: 創建一個視圖針對您的腳本/ procs用於插入的原始表。然後,當你需要時,創建你的第二個表,更新視圖指向第二個表,這樣插入可以繼續。然後更新您的原始表格並將視圖指回原始表格,並移動同時收集的數據。 https://msdn.microsoft.com/en-GB/library/ms180800.aspx

+0

因爲我害怕。任何解決方法? – RRTT93

+0

剛剛編輯了一個可能的解決方法,但我真的希望找到解決問題的替代方案。爲什麼列順序很重要? – TonyWaddle

+0

因爲老闆是老闆,所以感謝您的洞察力 – RRTT93