【问题标题】:How to make a foreign key from a composite key?如何从复合键生成外键?
【发布时间】:2013-06-27 09:16:02
【问题描述】:

我想从主键创建一个外键并收到此错误“#1005 - 无法创建表”

这是使用的 DDL...

CREATE TABLE Invoice
(
InvoiceID SMALLINT,
TaskID SMALLINT,
FOREIGN KEY Invoice(InvoiceID) REFERENCES XTABLE(InvoiceID),
PRIMARY KEY (InvoiceID, TaskID)
);

【问题讨论】:

  • 这是整个错误信息吗?您是否尝试过 FOREIGN KEY InoviceID 而不是 FOREIGN KEY Invoice(InvoiceID)?或者直接在 InvoiceID SMALLINT 之后写 REFERENCES XTABLE(InvoiceID)?
  • 显示CREATE TABLE XTABLE ...
  • 问题标题提到了复合键,但您的外键只使用一列:InvoiceID :-?

标签: mysql ddl


【解决方案1】:

确保XTABLEInvoice 中的键列标记为PRIMARY KEYNOT NULL

CREATE TABLE XTABLE(InvoiceID SMALLINT NOT NULL, PRIMARY KEY(InvoiceID));

CREATE TABLE Invoice ( 
  InvoiceID SMALLINT NOT NULL, 
  TaskID SMALLINT NOT NULL,
  PRIMARY KEY (InvoiceID, TaskID),
  CONSTRAINT FOREIGN KEY Invoice(InvoiceID) REFERENCES XTABLE(InvoiceID)
);

SQL FIDDLE: http://sqlfiddle.com/#!2/5a56f

【讨论】:

    猜你喜欢
    • 2017-08-05
    • 2011-12-05
    • 2022-08-15
    • 1970-01-01
    • 2018-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多