Asa*_*f R 8 t-sql sql-server foreign-keys calculated-columns sql-server-2008
表A有一个名为Computed1的计算字段.它persisted不是空的.此外,它总是计算一个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.
Run Code Online (Sandbox Code Playgroud)
问:为什么会出现此错误?计算列的外键是否需要特殊措施,如果是,它们是什么?
摘要:
计算字段由char(M),char(N)等组成,加起来为M + N + .. = 50,但计算字段本身是varchar(50).将RefersToComputed1更改为varchar(50)而不是char(50)可以解决问题.
计算字段外键不需要特殊处理(尽管计算列可能需要持久化).