【问题标题】:Creating 2 columns with AUTO_INCREMENT on InnoDB在 InnoDB 上使用 AUTO_INCREMENT 创建 2 列
【发布时间】:2012-12-10 16:41:18
【问题描述】:

我有 2 个 id 列:一个是表/系统 id,它没有任何意义,应该始终自动递增。第二个是企业 ID,并不总是会在插入时设置一个值,并且可以在插入后的任何时候设置一个递增的数字。

所以我打算使用 NO_AUTO_VALUE_ON_ZERO 设置,但从我读到的内容来看,InnoDB 不支持 2 个 auto_increment 列。我可以在这里使用任何解决方法吗?

【问题讨论】:

  • 如果一列没有意义,那它为什么存在?
  • 这方面的话题很多。您需要为第二列使用触发器。
  • 在其他 cmets 之上,auto_increment 必须 始终是主键,并且拥有 2 个主键是不合逻辑的(并且不支持),因此隐含的解决方案是一个触发器 - 如 @njk说。

标签: mysql innodb


【解决方案1】:

您不能在一个表中使用 2 个自动增量,也不能在 CURRENT_TIMESTAMP 中使用 2 个 TIMESTAMP 列,

您的选择:

  • 是创建触发器。
  • 重新设计您的数据库,因为如果您需要 2 个不为空的 auto_increment,这意味着您将在该表中拥有 2 个不为空 (PK) 的唯一键,这是不好的。

如何创建触发器:http://dev.mysql.com/doc/refman/5.1/de/create-trigger.html

【讨论】:

  • 好的,谢谢——关于数据库设计,我的企业 ID 可以为空;当“人”成为“客户”时,它的值被设置。在触发器上,并发性如何?我将不得不选择最新的 ID,添加 1 然后更新它;在此期间可以插入一条新记录。锁定更新表是最佳选择吗?
  • 有一个Mysql函数返回最后插入的id,看这里:dev.mysql.com/doc/refman/5.0/en/…
猜你喜欢
  • 2015-10-12
  • 2016-01-25
  • 1970-01-01
  • 2013-12-11
  • 2021-06-21
相关资源
最近更新 更多