質問

私の会社は、(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 * FROM INTO例2をやった後、あなたが得る:

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

私はそれが悪いのフィールドをドロップし、それらを再作成、固定、私は多分いくつかの特別なSQL Serverの構成と(SELECT INTOで作成したテーブル内の計算フィールドを維持または代替SQLを使用する方法があるかどうかを知りたいですコマンド)。

事前に感謝します。

役に立ちましたか?

解決

私はあなたがSELECT INTOでこれを行うことができるだろうとは思わない - 。あなたはビューに対して選択された場合、それだけで結果を取り、新しいテーブルにそれらをポンプだと同じように

あなたはおそらく、その後、最初に計算された列を持つテーブルを作成する非計算カラムのソース表から定期的に挿入を行う必要があります。

他のヒント

政策として、それは特に、移行にテーブルを作成するSELECT INTOの使用を避けることをお勧めします。あなたはおそらく、インデックス、トリガ、および任意のデフォルト値や制約を失うことになる、計算を失うことになるだけではなく。移行では、あなたが常にスクリプトアウトテーブルはあなたがなどトリガー、索引を含む移動する必要があります。

私の理解では、新しいテーブルがレコードセット内のデータ型から作成されていることです。したがって、計算式が失われた - しかし、レコードセットは結果の値が生成される方法についての情報を含んでいません。 (極端な例として、SELECT INTOのソースとしてGROUP BYを含むビューを考える)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top