【发布时间】:2016-08-26 09:20:41
【问题描述】:
如果在A 列中已经有一些具有相同值但在B 中具有不同值的行,则需要约束来拒绝插入/更新。
所以:
Insert TableName(A, B) Values(x, y)
Insert TableName(A, B) Values(x, y)
Insert TableName(A, B) Values(x, z)
将在 第三个 插入器上失败,因为 y =/=z。如果表中已经有行 (x, w),甚至在第一次插入时。
另一方面,这些插入是有效的:
Insert TableName(A, B) Values(c, y)
Insert TableName(A, B) Values(d, y)
最后一句话。数据不会被标准化。非规范化形式是一个特性而不是一个错误。这就是我要求约束的原因。
SQL Server 2008R2。
【问题讨论】:
-
真的没有得到约束背后的逻辑。为什么第一部分应该失败而第二部分应该通过?
标签: sql-server sql-server-2008-r2 constraints