テーブル A には、Computed1 という計算フィールドがあります。persisted
null ではありません。また、常に char(50) である式に計算されます。また、一意であり、一意のキー制約があります。
テーブル B には、フィールド RefersToComputed1 があり、有効な Computed1 値を参照する必要があります。
A' Computed1 を参照する B の RefersToComputed1 に外部キー制約を作成しようとすると、次のエラーが発生します。
Error SQL01268: .Net SqlClient Data Provider: Msg 1753, Level 16, State 0, Line 1 Column
'B.RefersToComputed1' is not the same length or scale as referencing column 'A.Computed1' in
foreign key 'FK_B_A'. Columns participating in a foreign key relationship must be defined with
the same length and scale.
Q: なぜこのエラーが発生するのですか? 計算列の外部キーに必要な特別な手段はありますか? もしそうなら、それらは何ですか?
概要:
- 特定の問題は、計算された char ベースのフィールドが varchar であることから生じます。したがって、Computed1 は varchar(50) であり、char(50) ではありません。
- 計算フィールドの式をキャストで囲み、特定の型に強制することをお勧めします。このヒントは Cade Roux の功績によるものです。