表 A 有一个名为 Computed1 的计算字段。它persisted
不是空的。此外,它始终计算为 char(50) 的表达式。它也是唯一的,并且具有唯一的键约束。
表 B 有一个字段 RefersToComputed1,它应该引用一个有效的 Computed1 值。
尝试在 B 的 RefersToComputed1 上创建引用 A' Computed1 的外键约束会导致以下错误:
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.
问:为什么会产生这个错误?计算列的外键是否需要特殊措施,如果有,它们是什么?
概括:
- 具体问题源于计算的、基于字符的字段是 varchar。因此,Computed1 是 varchar(50) 而不是 char(50)。
- 最好围绕计算字段的表达式进行强制转换,以将其强制为特定类型。这个提示归功于 Cade Roux。