创建主要和外键关系

时间:2015-09-01 03:45:05

标签: mysql mysql-workbench

我正在尝试创建一个表名accounts。我在mysql workbench中创建了一个可视化图表。我从图中复制sql command尝试从命令行创建真实表但命令行显示

ERROR 1215 (HY000): Cannot add foreign key constraint

这是查询

CREATE TABLE accounts(
    account_id INT NOT NULL AUTO_INCREMENT,
    customer_id INT( 4 ) NOT NULL ,
    account_type ENUM( 'savings', 'credit' ) NOT NULL,
    balance FLOAT( 9 ) NOT NULL,
    PRIMARY KEY ( account_id ), 
    FOREIGN KEY (customer_id) REFERENCES customers(customer_id) 
) ENGINE=INNODB;

1 个答案:

答案 0 :(得分:1)

customers表格如下所示。它需要具有父表(客户)中列的公共数据类型和索引。如果列类型/索引错误,则FK将在子表创建时失败。

对于在child中预先存在数据的ALTER TABLE add constraint命令,如果数据无效,它将失败。

顺便说一句,INT(4)只是一个显示宽度。它仍然是一个int。

create table customers(
    customer_id int auto_increment primary key,
    customerName varchar(100) not null
    -- other columns
);

CREATE TABLE accounts(
    account_id INT AUTO_INCREMENT PRIMARY KEY,
    customer_id INT( 4 ) NOT NULL ,
    account_type ENUM( 'savings', 'credit' ) NOT NULL,
    balance FLOAT( 9 ) NOT NULL,
    FOREIGN KEY (customer_id) REFERENCES customers(customer_id) 
) ENGINE=INNODB;