SQL Server的:保持与SELECT INTO计算领域
-
29-08-2019 - |
题
我公司进行了数据迁移最近(在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视图的)
不隶属于 StackOverflow