我有一个表,它的主键由两列组成(product_id,attribute_id).我还有一张桌子需要参考这张桌子.如何在另一个表中创建外键,将其链接到表中具有两个主键的行?

推荐答案

应该这样做:

CREATE TABLE MyReferencingTable AS (
   [COLUMN DEFINITIONS]
   refcol1 INT NOT NULL,
   rofcol2 INT NOT NULL,
   CONSTRAINT fk_mrt_ot FOREIGN KEY (refcol1, refcol2)
                        REFERENCES OtherTable(col1, col2)
) ENGINE=InnoDB;
  • MySQL要求外键被索引,因此索引在引用列上
  • 使用约束语法可以命名约束,以便在以后需要时更容易修改和删除.
  • InnoDB执行外键,MyISAM不执行.(语法已解析,但被忽略)

Mysql相关问答推荐

SQL Store Procedure Throwing [42000][1064]您在EXECUTE stat USING声明上的SQL语法中有错误

SQL中的搜索模式

了解查询中ORDER BY的行为

MySQL binlog事件上的并发事务行为

"Shelf服务器容器访问MySQL Docker容器时出现SocketException异常"

在 MySQL 中,如何对 LIKE 查询进行批量更新,删除字符?

SQL使用LIMIT获取结果和结果中的行数

如何根据 R 中的价格范围将数据从一列复制到新列?

Mysql,显示谁已经和没有 Select 退出巴士服务

从 mysql RDS 导出数据以导入 questDb

当用它的别名替换 (MAX(s.salary) - MIN(s.salary) 它将不起作用.. 为什么?

Select 分组产品的数量和每个产品的最便宜的价格

在 Presto Athena 中将字符串转换为数组

有没有更好的方法在无限滚动的网页上呈现获取的提要数据?

非常规字符的不正确字符串值错误

mysql - 如何加入表中的动态列

使用 MySQL 流式传输大型结果集

MySQL使用多列 Select 重复记录

MySQL错误 1005 (HY000): 无法创建表 'foo.#sql-12c_4' (errno: 150)

如何从两个不同的日期获得年份差异?