MySQL 问题.. 一次创建和引用表

标签 mysql

我试图一次创建多个表(其中一些引用其他表)。

我想我匹配了数据类型并正确设置了主键/外键。但我只能看到一个错误 的“您不能添加外键约束”。我认为引用的表可能先创建在其他表引用它之前,所以我颠倒了顺序,结果是一样的。

最后,我尝试先创建和执行引用的表(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_typeitem 表,它应该可以工作。

关于MySQL 问题.. 一次创建和引用表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18250328/

相关文章:

php - 使用 MYSQL 选择日期之间的行?

mysql - 具有 REQUIRE SSL 的 Ansible MySQL 用户

php - 为什么我不应该在 PHP 中使用 mysql_* 函数?

傻瓜式 Mysql 集群

php - PDO : How different is mysql from postgresql

PHP、MySQL 错误 : Column count doesn't match value count at row 1

MySQL : Selecting count of mutiple enum value

mysql - 使用用户输入在 .SQL 查询文件中搜索和替换的 Perl 脚本

mysql - 每当我尝试登录 mysql 时出现访问被拒绝错误

mysql - 拆分逗号分隔字符串 --> FUNCTION db.CHARINDEX 不存在