【问题标题】:auto_increment usage in composite key复合键中的 auto_increment 用法
【发布时间】:2011-04-17 19:38:37
【问题描述】:

我有一个带有复合键的表

emp_tbl(
companyId int not null,
empId int not null auto_increment,
name varchar2,
....
...
primary key(companyId,empId)
);

在 mysql 中发生的事情是当我开始插入数据时

Emp_tbl

companyId    empId
1             1
1             2
1             3
2             1
2             2

请注意,当 companyId 更改时,auto_increament 值会再次重置为 1。我想禁用它。我的意思是我不想重置自动增量。我期待这样的结果。

companyId    empId
1             1
1             2
1             3
2             4
2             5

有可能吗? 谢谢

【问题讨论】:

    标签: mysql auto-increment


    【解决方案1】:

    这就是包含 auto_increment 的复合主键所发生的情况。重新创建主键,使其纯粹是您的 auto_increment 字段 (empId),然后在 companyId 和 empId 上创建唯一索引

    编辑

    请注意,这只适用于 MyISAM 和 BDB 表。如果您将 InnoDB 用于您的表,那么它也可以按您的意愿工作

    【讨论】:

    • 有没有办法让 innodb 像 MyISAM 和 BDB 一样工作?
    【解决方案2】:

    如果您不希望 empId 重置,则只需颠倒主定义的顺序

    primary key(companyId,empId)
    

    请注意,复合键顺序很重要。

    【讨论】:

      猜你喜欢
      • 2012-07-04
      • 2013-03-16
      • 2015-06-09
      • 1970-01-01
      • 2016-11-08
      • 2019-06-03
      • 1970-01-01
      • 2020-08-25
      • 1970-01-01
      相关资源
      最近更新 更多