mysql - 如何创建复合键?

标签 mysql sql constraints composite mysql-workbench

我是 MySQL WB 的新手,所以我可以通过在依赖表之间添加关系来创建外键。

但是如何创建复合键呢? 例如我有这张表 sql

CREATE TABLE TASKS
(
 TEST_ID NUMBER(6) CONSTRAINT FK_TASKS_TESTS REFERENCES TESTS(TEST_ID),
 TASK_ID NUMBER(3),
 MAX_POINTS NUMBER,
 CONSTRAINT PK_TASKS PRIMARY KEY (TEST_ID, TASK_ID)
);

是否有一个选项,或者应该以其他方式创建?

最佳答案

问题归结为唯一性。如果您知道 TASK_ID 是唯一的,那么最好将单个列作为您的主键。 MySQL 允许多列主键,但如果 TASK_ID 是唯一的,只需将其设为主键并在 TEST_ID 上添加另一个索引。主键的语法是:

CREATE TABLE TASKS
(
TEST_ID NUMBER(6),
TASK_ID NUMBER(3),
MAX_POINTS NUMBER,
PRIMARY_KEY(TASK_ID) -- OR PRIMARY_KEY(TASK_ID, TEST_ID) for the composite key
);

参见 this discussion获取更多信息。

关于mysql - 如何创建复合键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9479524/

相关文章:

sql - 在 SQL Server 上使用与不使用 CONSTRAINT 关键字的区别

mysql - 使用 play 框架从 mysql 读取并插入 mongo(多线程问题)的运行脚本问题

mysql - 如何在 LEFT JOIN 上正确使用扩展约束以返回左侧的所有结果

php - 'fi' 在数据库中显示不正确

MySQL 认为我需要使用 ROLLUP 但我不确定

php - 如何在 MySQL 语句中包含 PHP 变量

mysql - 用于数据排序的 SQL 查询

MySQL查询查找未映射的结果

java - 在 Java 中使用 JaCop 优化函数

Swift - 自定义按钮类阴影大小缩放不起作用