我试图一次创建多个表(其中一些引用其他表)。
我想我匹配了数据类型并正确设置了主键/外键。但我只能看到一个错误 的“您不能添加外键约束”。我认为引用的表可能先创建在其他表引用它之前,所以我颠倒了顺序,结果是一样的。
最后,我尝试先创建和执行引用的表(item_type),然后再引用表(item)......并且...成功了!
但是,我想知道这些代码是否可以立即执行。
这是下面的代码.. (为了简单起见,只显示了两个表..)
CREATE TABLE item (
i_id SMALLINT unsigned NOT NULL AUTO_INCREMENT,
i_name VARCHAR(30) NOT NULL,
t_id SMALLINT unsigned NOT NULL,
PRIMARY KEY (i_id),
FOREIGN KEY (t_id) REFERENCES item_type(t_id)
) ENGINE=INNODB;
CREATE TABLE item_type (
t_id SMALLINT unsigned NOT NULL AUTO_INCREMENT,
t_name VARCHAR(20) NOT NULL,
PRIMARY KEY(t_id)
);
最佳答案
您不能为不存在的表定义外键,因此按上述顺序执行 CREATE TABLE
操作是行不通的。如果您首先创建 item_type
表,然后创建外键为 item_type
的 item
表,它应该可以工作。
关于MySQL 问题.. 一次创建和引用表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18250328/