如果您没有代理键,如果主要标识符已被使用,您将如何创建第二行?如果稍后删除具有主标识符的行,会发生什么?
答案 0 :(得分:0)
这个问题无济于事。行是否具有代理键确实解决了问题。根据定义,主键是唯一的。
您描述的方案的列值显然不是键,因为它们是重复的。
如果你需要使用这些作为密钥的基础,可以将它们与另一列连接起来,甚至可能只是一个顺序增加的序列号。
答案 1 :(得分:0)
如果您的主键不是代理键,那么您的主键称为自然键。自然键可以是单列,如果自然键由多列组成,则称为复合键。所有密钥必须是唯一的,如果您有一个业务规则,如果密钥已经存在,您想要创建另一行,那么您的“密钥”将不是唯一的,并且该组列不能也不应该用作键。数据库将产生错误,您尝试INSERT违反唯一/键约束的路由。