在多列上添加外键

nic*_*ico 10 mysql foreign-keys mysql-error-1005

我正在尝试在表的两列上创建一个外键以指向另一个表的同一列,但我似乎得到一个错误...

这是我做的:

CREATE TABLE test2 (
  ID INT NOT NULL AUTO_INCREMENT,  
  col1 INT NOT NULL,
  col2 INT NOT NULL, 
  PRIMARY KEY (ID),
  CONSTRAINT fk FOREIGN KEY (col1, col2)
                REFERENCES test1(ID, ID)
  ON UPDATE CASCADE
  ON DELETE RESTRICT
) ENGINE=InnoDB;
Run Code Online (Sandbox Code Playgroud)

但我明白了

ERROR 1005 (HY000): Can't create table 'DB.test2' (errno: 150)

但是,如果我只有一列,则表格已正确创建.

有人能指出我的错误在哪里吗?

谢谢你

rse*_*nna 8

在这里尝试并得到了同样的错误.这有效:

CREATE TABLE test2 (
  ID INT NOT NULL AUTO_INCREMENT,  
  col1 INT NOT NULL,
  col2 INT NOT NULL, 
  PRIMARY KEY (ID),
  CONSTRAINT fk FOREIGN KEY (col1)
                REFERENCES test1(ID)
  ON UPDATE CASCADE
  ON DELETE RESTRICT,
  CONSTRAINT fk2 FOREIGN KEY (col2)
                REFERENCES test1(ID)
  ON UPDATE CASCADE
  ON DELETE RESTRICT

) ENGINE=InnoDB
Run Code Online (Sandbox Code Playgroud)

是的,我知道 - 你的脚本应该可行(即使它似乎没有多大意义).然而,我想这个新版本更好.

  • @nico - 它的工作原理是因为你有两个独立的关系到同一个父表列.可以这样想,只有当父表键是多列键时才会使用原始帖子中的语法.如果父表列是单个列,则对于要引用该父表列的每个子列,必须创建单独的外键约束. (4认同)