我公司进行了数据迁移最近(在SQL Server 2005数据库),我们注意到,与SELECT INTO创建一些表并没有保持原始表的计算领域,而是SQL Server中创建常规字段与类型由原始计算返回。例如,假设你有这样的表:

create table Example (
 id int not null,
 quantity decimal(19,5) not null,
 price decimal(19,5) not null,
 total as price*quantity 
)

做一个SELECT * INTO例题由实施例后您将获得:

create table Example2 (
 id int not null,
 quantity decimal(19,5) not null,
 price decimal(19,5) not null,
 total decimal(38,9) null
)

我固定它丢弃坏的领域和重建他们,但我想知道是否有保持与SELECT INTO创建(也许有一些特殊的SQL Server配置表中的计算字段或使用替代SQL的方式命令)。

预先感谢。

有帮助吗?

解决方案

我不认为你将能够用SELECT INTO这样做 - 就像如果你对一个视图中选择,它只是录取结果,并将其泵送至一个新的表

您很可能需要先创建与计算列的表,然后从非计算列的源表做一个普通的插入。

其他提示

作为一个策略是它最好避免使用SELECT INTO特别是在迁移中创建表。你不仅会失去的计算,你将失去索引,触发器,可能任何违约或约束。在迁移应始终脚本出来的表格要移动包括触发器,索引等。

我的理解是,新的表是从在记录集合中的数据类型创建的。然而,记录集不包含关于如何生成所得到的值的信息 - 因此,计算公式将丢失。 (作为极端的例子,认为含有GROUP BY作为源为一个SELECT INTO视图的)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top