检查约束中的UDF——缺点?

jmo*_*eno 2 constraint sql-server-2008-r2

我有一个表,其中所有操作都会影响单行(插入和更新,没有删除,但如果有,它们也将是单独的)。我正在考虑在检查约束中使用 UDF,这样我就可以确保一个字段值仅与另一个值结合使用(两个 FK,第一次使用 A=1,B=x 变得固定,这样如果x = 4 那么 A=1 永远不能与 B=3 或除 4 之外的任何东西匹配)。

除了插入/更新行时花费的额外时间微不足道之外,这样做的缺点是什么?

更新:应用程序不提供在创建行后更改 A 列或 B 列的机制。

A-K*_*A-K 5

您可以将 A 列和 B 列存储在单独的表中。确保您的表在 A 上有一个主键,在 (A,B) 上有一个唯一约束,请从您的表中引用 (A,B)。A 上的主键将保证每个 A 只有一个 B。只要从子表中引用该行,没有 ON UPDATE CASCADE 的外键将确保 B 不会更改。