mysql - 如何使用两个外键的两个主键创建一个表?

标签 mysql foreign-keys primary-key composite-primary-key

create table Machine
(
 Machine_ID int primary key,
 Machine_Name varchar(30)
 Machine_Title varchar(30)
)
create table Part
(
 Part_ID int primary key,
 Part_Name varchar(30),
 Part_Description varchar(30)
)

//How do I make this table below?
create table Machine-Part
(
  Machine_ID int foreign key references (Machine.Machine_ID),
  Part_ID int foreign key references (Part.Part_ID)
  Factory_Note varchar(30);
) 

Mysql 提示语法有问题?

期望的结果:让表“Machine-Part”使用“Machine_ID”和“Part_ID”作为两个主键(它们都是外键)。

最佳答案

如果单独声明约束(表级别),则更有意义

create table Machine-Part
(
  Machine_ID int NOT NULL ,
  Part_ID int NOT NULL ,
  Factory_Note varchar(30) NULL,

  PRIMARY KEY (Machine_ID, Part_ID),
  UNIQUE INDEX (Part_ID, Machine_ID),
  foreign key (Machine_ID) references (Machine.Machine_ID),
  foreign key (Part_ID) references (Part.Part_ID)
) 

链接表也几乎总是需要反向索引

关于mysql - 如何使用两个外键的两个主键创建一个表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9114274/

相关文章:

java.lang.NumberFormatException : with JSP App and mySQL

mysql - 在Codeigniter中添加mysql表之间的关系

sql - sql server数据库中的主键数据类型

sql - 将 Oracle 序列重置为现有列中的下一个值的最佳方法?

mysql - 续集错误: missing index for constraint

mysql - MySQL中自动递增ID字段的最小长度

mysql - 超过 1 个具有相同 ID 的记录在与另一个表连接后提供双重数据

php - php 中的 mysqldump.exe

php - 如何在 if 条件下使用数组

mysql - mariaDB 外键未形成 - varchar 不是签名/未签名问题