【问题标题】:Auto increment with composite primary key使用复合主键自动递增
【发布时间】:2017-10-14 18:40:21
【问题描述】:

我不完全确定要搜索什么,所以如果这实际上是重复的,我深表歉意。

我有一张桌子(或至少想要)如下:

  • 身份证
  • 公司名称
  • SomeOtherInfo

主键是IDCompany name(复合主键)。我想要的是让每个公司的 ID 自动递增。

例如:

1-google
2-google
3-google
1-yahoo
4-google
2-yahoo

通过这种方式,它们始终是独一无二的,但每个公司都会单独递增。

这是否可以通过简单的 SQL 创建命令实现,宁愿没有 2 个表并使用辅助 ID 连接它们。

告诉我,谢谢。

【问题讨论】:

  • 这将强烈依赖您使用的具体数据库系统。 SQL 作为查询语言没有任何此类功能 - 但也许某些供应商特定的扩展会提供类似的功能。请添加相关标签,例如oraclepostgresqlmysqlsql-serverdb2 或您可能在帖子中使用的任何其他标签!
  • 标准 SQL 具有 IDENTITY 和 SEQUENCE 两者都是自动序列生成器的功能。大多数 DBMS 都支持标准 IDENTITY 和 SEQUENCE 关键字,但 MySQL 使用 AUTO_INCREMENT 而不是 IDENTITY,并且没有 SEQUENCE 等价物。

标签: mysql sql key primary-key auto-increment


【解决方案1】:

如果我遵循这个问题。在 ID 列上创建具有标识的单个表。然后在公司名称上创建一个唯一索引。

MySql 版本
CREATE TABLE Company (
    CompanyID int NOT NULL AUTO_INCREMENT,
    CompanyName varchar(255) NOT NULL,
    OtherData  varchar(255),
    PRIMARY KEY (CompanyID)
); 

CREATE UNIQUE INDEX CompanyUniqueComposite
ON Company (CompanyID , CompanyName ); 

【讨论】:

  • CompanyID 是一种引用记录的方式。 CompanyName 和 SomeOtherInfo 的组合必须是唯一的,以防止创建重复记录。这假设我了解 OP 的要求.....
  • 我正在寻找一个示例,看看是否可以在 mysql 中执行此类操作:stackoverflow.com/a/6383117/3339122 我只是在其中插入公司名称,其他信息和 ID 加一,对于每家公司(如他给出的示例所示)
猜你喜欢
  • 2015-06-08
  • 2015-09-03
  • 1970-01-01
  • 2021-07-04
  • 1970-01-01
  • 1970-01-01
  • 2018-03-29
  • 2016-04-04
  • 1970-01-01
相关资源
最近更新 更多