mysql - 声明两个也是主键的外键

标签 mysql foreign-keys innodb

我在表上声明两个外键时遇到了一个奇怪的问题,它们也是我表中的主键。这是我的 sql 代码:

CREATE TABLE IF NOT EXISTS guest (
    id_guest varchar(50) NOT NULL,
    PRIMARY KEY(id_guest)
) ENGINE=InnoDb DEFAULT CHARSET=latin1;

CREATE TABLE IF NOT EXISTS product (
    id_product varchar(100) NOT NULL,
    PRIMARY KEY(id_product)
) ENGINE=InnoDb DEFAULT CHARSET=latin1;

CREATE TABLE IF NOT EXISTS product_guest_resale (
    id_guest varchar(50) NOT NULL,
    id_product varchar(100) NOT NULL,
    amount int(100) NOT NULL, 
    PRIMARY KEY (id_guest, id_product),
    FOREIGN KEY id_guest REFERENCES guest(id_guest),
    FOREIGN KEY id_product REFERENCES product(id_product)
) ENGINE=InnoDb DEFAULT CHARSET=latin1;

当我执行我的代码时,我得到这个错误:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'REFERENCES guest(id_guest),
FOREIGN KEY id_product REFERENCES product(' at line 6

怎么了?

最佳答案

你错过了括号:

CREATE TABLE IF NOT EXISTS product_guest_resale (
    id_guest varchar(50) NOT NULL,
    id_product varchar(100) NOT NULL,
    amount int(100) NOT NULL, 
    PRIMARY KEY (id_guest, id_product),
    FOREIGN KEY (id_guest) REFERENCES guest(id_guest),
    FOREIGN KEY (id_product) REFERENCES product(id_product)
) ENGINE=InnoDb DEFAULT CHARSET=latin1;

关于mysql - 声明两个也是主键的外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28715826/

相关文章:

php - Wordpress - 将联系表单 7 字段作为单独的列保存到数据库中

php - 如何从另一个表中使用的一个表中连接两个具有多个 ID 的表?

database - Firebird 1.5.3 : How to add FK with connected users to the DB?

Mysql 将表引擎 MyISAM 更改为 InnoDB

mysql - symfony 1.4 推进 :build-all not working on Mysql 5. 5

java - JBoss 中的数据源绑定(bind)

javascript - 新数据行上的 SQL 更新列

nhibernate - Fluent NHibernate - 加入子类ForeignKey Name

python - Django 模型将外键设置为另一个模型的字段

MySQL 表占用空间太大?