当前位置: 首页 > 面试题库 >

MySQL 5中的多列主键

双元魁
2023-03-14
问题内容

我正在尝试学习如何使用键并打破习惯,即SERIAL我所有表中的所有行都必须具有类型ID。同时,我也在进行多对多关系,因此在需要协调关系的表的任一列上要求唯一值会妨碍这一点。

我如何在表上定义主键,以便任何给定的值都可以在任何列中重复,只要永不完全重复所有列中的值组合即可?


问题答案:

从CREATE TABLE语法页面引用:

主键可以是多列索引。但是,您不能使用列规范中的PRIMARY KEY键属性创建多列索引。这样做仅将单列标记为主要。您必须使用单独的PRIMARY
KEY(index_col_name,…)子句。

这样的事情可以用于多列主键:

CREATE TABLE
    product (
        category INT NOT NULL,
        id INT NOT NULL,
        price DECIMAL,
        PRIMARY KEY(category, id)
    );

从 13.1.20.6外国关键约束



 类似资料:
  • 我有一个表,其中有几个列组成了主键。存储的数据的性质允许其中一些字段具有值。我把桌子设计成这样: 但是,当我运行时,它显示如下: 在插入值时,我一直收到错误。 列“Field2”不能为空 这是因为作为主键一部分的字段不能为空吗?除了对< code>NULL使用“0”之外,我还有什么选择?

  • 我仍然试图学习如何创建一个搜索与搜索行动和数据库。但是我有太多的错误: > [运行时异常:没有为名称配置JPA EntityManagerFactory[默认]]当我修复文件时,会出现此错误,如: *db。违约driver=com。mysql。jdbc。驾驶员 db。违约url=“jdbc:mysql://localhost/search" db.default.user=root db.defa

  • 问题内容: 经过搜索,没有找到这个特定的菜鸟问题的答案。如果我错过了,我深表歉意。 在MySQL数据库中,我有一个带有以下主键的表 主键ID(发票,项目) 在我的应用程序中,我也会经常自己选择“项目”,而很少选择“发票”。我假设我将从这些列的索引中受益。 当我定义以下内容时,MySQL不会抱怨: 索引(发票),索引(项目),主键ID(发票,项目) 但是,我没有看到任何证据(使用DESCRIBE-我

  • 本文向大家介绍Mysql5升级到Mysql5.5的方法,包括了Mysql5升级到Mysql5.5的方法的使用技巧和注意事项,需要的朋友参考一下 安装5.5依赖安装包 代码如下   安装cmake 代码如下   在升级前,建议先将之前5.1的mysql及数据库目录备份一下   停止掉mysql 代码如下 升级mysql 5.5.36 代码如下  删除/etc/下的my.cnf配置文件 代码如下 拷贝

  • 错误结果为 “OneToOne关系的JPA问题:外键引用的列数错误。应为2” 如何为join测试表指定主键? 表A:列id与表B:列test_id映射

  • 问题内容: 我想看一个例子: 什么时候合适 当这不合适时 是否有一段时间数据库的选择会与上述示例有所不同? 问题答案: 这似乎是关于 代理 键的问题, 代理 键始终是自动递增的数字或GUID,因此是单列,而 自然 键则通常需要多个信息才能真正唯一。如果您能够拥有仅一列的自然键,那么无论如何,这一点显然是没有意义的。 有些人会坚持只使用其中之一。花足够的时间使用生产数据库,您将了解到没有任何上下文无