如何定义MySQL中的延迟约束(How to define a deferred constrain

2019-09-19 13:07发布

是否有可能建立在现有表上已经重复值的列的主键? 我想要的是以前的记录无法验证,但新的记录将被this.Is验证可以在MySQL。 我知道这是可能在甲骨文( 这里有一个例子 ),但没有关于MySQL的想法。

Answer 1:

在您发布链接以书呆子-追风的答案评论使用延迟的限制。 这些约束在事务结束,而不是在执行该语句的时间检查。

MySQL不支持延迟约束

如果你确实需要延期的约束,并希望坚持使用开源数据库,您将需要迁移到PostgreSQL。



Answer 2:

不,它不能。 它违背了什么主键手段。 但是,如果你想有一个复合主键,有可能



Answer 3:

主键始终是一个唯一的标识符,如果你把它非唯一它不再是一个标识符,你为什么要重复一次吗? 如果你有一个有重复字段的多个条目,该字段是不是你的主键,但是,你可以用另一个领域,会给你一个主键(不是非常值得推荐结合起来,但你可以让这个字段加时间戳字段中输入您联合主键)。

在这种情况下,我会建议是让一个自动增量键,只需使用该字段重复作为一个正常的领域,也许广告的索引,它来改善搜索。 您仍然可以查找记录,在任何领域,只是因为它不是你的主键,这并不意味着你不会是能够搜索并得到它。 主键的想法是,它会让你且只有1个记录,而不是1以上。



文章来源: How to define a deferred constraint in MySQL