是否可以在具有重复值的列的现有表中创建主键?我想要的是以前的记录不验证,但新记录会用这个验证。在 mysql 中是否可能。我知道在 Oracle 中是可能的(这里是一个例子),但不知道 mysql。
问问题
3586 次
3 回答
6
您作为对 Nerd-Herd 答案的评论发布的链接使用了延迟约束。这些约束在事务结束时检查,而不是在语句执行时检查。
MySQL 不支持延迟约束
如果您绝对需要延迟约束并想坚持使用开源数据库,则需要迁移到 PostgreSQL。
于 2012-07-23T07:10:28.883 回答
3
不,不可能。它违反了主键的含义。但是如果你想要一个复合主键,它可能是可能的
于 2012-07-16T09:38:12.477 回答
2
主键始终是唯一标识符,如果将其设为非唯一标识符,则它不再是标识符,为什么要重复它?如果您有多个条目具有重复的字段,则该字段不是您的主键,但是,您可以将其与另一个将为您提供主键的字段结合使用(不是很推荐,但您可以将此字段加上时间戳字段您的组合主键)。
在这种情况下,我建议创建一个自动增量键,并只使用这个作为普通字段重复的字段,也许可以为其添加一个索引来改进搜索。您仍然可以在任何字段上查找记录,只是因为它不是您的主键,但这并不意味着您将无法搜索和获取它。主键的想法是它将为您提供 1 条且仅 1 条记录,而不是 1 条或更多条记录。
于 2012-07-16T09:39:42.227 回答