2016-09-27 59 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