2012-09-10 72 views
1

这里是我的脚本:错误的SQL语法创建时,简单的外键参考

create table Country 
(
CountryId int primary key, 
Name varchar(255) 
); 

create table Person 
(
PersonId int primary key, 
Name varchar(255), 
FOREIGN KEY (CountryId) references Country(CountryId) 
); 

我从MS SQL转换并试图获得MySQL的把握,并与有关人士的典型我的Hello World出发>国家关系,以获得外键的感觉。

我得到上的phpMyAdmin此错误:

SQL查询:

CREATE TABLE人(

PERSONID INT PRIMARY KEY,名称VARCHAR(255),外键( CountryId )参考国家(CountryId));

MySQL表示:

1072 - 键列 'CountryId' 不表

什么新手的错误存在我在这里做?

+0

你在我回答后改变了问题!新的错误是由于您的第二张表没有'CountryId'字段。 –

+0

@MattHumphrey:所以我必须在另一行中明确声明该字段? – sergserg

回答

2

这是因为您还没有在外部关键字中创建Person中的列,因此Key column 'CountryId' doesn't exist in table。下面是你如何做到这一点:

CREATE TABLE Person(
    PersonId INT PRIMARY KEY , 
    Name VARCHAR(255) , 
    CountryId int, 
    FOREIGN KEY (CountryId) REFERENCES Country(CountryId) 
); 
+0

我可以在与MSSQL类似的同一行上写入创建和外键绑定吗? – sergserg

+0

不是我所知道的。但你可以在这里研究:http://dev.mysql.com/doc/refman/5.0/en/innodb-foreign-key-constraints.html –