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

MySQL中的多列外键?

仇经武
2023-03-14
问题内容

我有一个表,该表的主键包含两列(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(5.1.31,InnoDB)中的一列,该列是另一个表的外键。 最初,我们尝试使用Django-South,但遇到了一个已知问题: http://south.aeracode.org/ticket/243 OperationalError:(1025,“将’./xxx/#sql- bf_4d’重命名为’./xxx/cave_event’时出错(错误号:150

  • 问题内容: 我正在尝试学习如何使用键并打破习惯,即我所有表中的所有行都必须具有类型ID。同时,我也在进行多对多关系,因此在需要协调关系的表的任一列上要求唯一值会妨碍这一点。 我如何在表上定义主键,以便任何给定的值都可以在任何列中重复,只要永不完全重复所有列中的值组合即可? 问题答案: 从CREATE TABLE语法页面引用: 主键可以是多列索引。但是,您不能使用列规范中的PRIMARY KEY键属

  • 我在表中添加了一列(下面的查询) 现在我想删除这个专栏(fk_job_id)。我尝试了这些查询,但它们给出了错误。 第一个Alter语句给出的错误为-(但该列存在)。 第二个Alter语句给出错误,因为-

  • 问题内容: 我有一个数据库,其中有四列对应于开始和结束位置的地理坐标x,y。这些列是: 00 00 x1 11 我有这四个列的索引,其顺序为x0,y0,x1,y1。 我列出了大约一百种地理对组合。我将如何有效地查询此数据? 我想按照此SO答案的建议执行类似的操作,但它仅适用于Oracle数据库,不适用于MySQL: 我以为可能对索引做些什么?最好的方法是什么(即:最快的查询)?谢谢你的帮助! 笔记

  • 问题内容: 我正在尝试使用select语句从某个MySQL表中获取除一个以外的所有列。有没有简单的方法可以做到这一点? 编辑:此表中有53列(不是我的设计) 问题答案: 实际上有一种方法,您当然需要具有执行此操作的权限… 更换

  • 我正在尝试创建外键。 这两个表中的列都是VARCHAR(255),而PK也不是,但是我不断得到这样的错误消息: 我不知道如何把主题标题和帖子的topic_title做一个fk。 谢谢你的帮助,非常需要。 安娜,祝你有个愉快的一天