【问题标题】:I thought auto_increment prevents duplicates entries?我认为 auto_increment 可以防止重复条目?
【发布时间】:2022-11-16 07:26:19
【问题描述】:

尝试插入值时出现键“primary”的重复输入错误,我无法通过它。我将 auto_increment 添加到复合键 (term_taxonomy_id) 的整数部分。在这些情况下,auto_increment 不应该通过即时增加导致错误的记录来解决重复条目吗?

+------------------+---------------------+------+-----+---------+----------------+
| Field            | Type                | Null | Key | Default | Extra          |
+------------------+---------------------+------+-----+---------+----------------+
| object_id        | varchar(50)         | NO   | PRI | NULL    |                |
| term_taxonomy_id | bigint(20) unsigned | NO   | PRI | NULL    | auto_increment |
| term_order       | int(11)             | NO   |     | 0       |                |
+------------------+---------------------+------+-----+---------+----------------+

我尝试执行的查询如下所示:

insert into defaultdb.wp_term_relationships(object_id, term_taxonomy_id)
    select
        q3.NewsItems_x_Tags.NewsItemID  as `object_id`,
        defaultdb.wp_term_taxonomy.term_taxonomy_id as `term_taxonomy_id`
    from defaultdb.wp_term_taxonomy
    inner join
        defaultdb.wp_terms on wp_terms.term_id = wp_term_taxonomy.term_id
    inner join
        q3.NewsItems_x_Tags on LOWER(q3.NewsItems_x_Tags.NewsTagID) = LOWER(wp_terms.name) 
    COLLATE utf8mb4_unicode_520_ci where LOWER(q3.NewsItems_x_Tags.NewsTagID) 
              not in ('local', 'inwine', 'covid-19', 'kelowna', 'kamloops', 'penticton', 'vernon'); 

如果有的话其他您需要查看让我知道的描述的表格,我可以编辑问题。

【问题讨论】:

  • 如果您没有明确提供一个值,自动递增通常只会设置一个值。在这种情况下,您似乎已明确告诉它使用特定值。
  • 不,它只是自动增加它。但你应该将它播种到最大的 id ALTER TABLE xxx AUTO_INCREMENT = 1000;

标签: mysql sql mariadb auto-increment mysql-error-1062


【解决方案1】:

https://dev.mysql.com/doc/refman/8.0/en/example-auto-increment.html 说:

当您将任何其他值插入 AUTO_INCREMENT 列时,该列将设置为该值并重置序列,以便下一个自动生成的值从最大列值开始按顺序排列。

因此自增列会生成一个新的唯一值只要如果您插入 NULL 或 0。如果您指定一个非零整数值,您将覆盖自动增量,并且 MySQL 相信您正在插入您想要的值。但这意味着您有责任确保您插入的值是唯一的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-02
    • 2015-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-07
    • 2012-04-15
    相关资源
    最近更新 更多