外键不添加而是给出错误

时间:2013-07-31 09:00:20

标签: mysql sql

我正在使用MySQL

我创建的数据库是这样的:

Create table Author ( Id int , Name nvarchar(max) );

Create table Image ( Id int ,ImagePath nvarchar(max) );

Create table Blog ( Id int ,Name nvarchar(max) ,AuthorId int );

Create table BlogImages ( Id int ,BlogId int ,ImageId int );

现在,当我尝试下面的部分时,我会收到错误

ALTER TABLE Blog ADD FOREIGN KEY (AuthorId) REFERENCES Author(Id)

ALTER TABLE BlogImages ADD FOREIGN KEY (BlogId) REFERENCES Blog(Id)

ALTER TABLE BlogImages ADD FOREIGN KEY (ImageId) REFERENCES Image(Id)

请指导 我需要在表格中添加外键

3 个答案:

答案 0 :(得分:1)

您必须定义primary keys

Create table Author 
 ( 
    Id int , 
    Name nvarchar(max), 
    PRIMARY KEY (id) 
 );

Create table Image
  ( 
    Id int ,
    ImagePath nvarchar(max), 
    PRIMARY KEY (id) 
  )

Create table Blog 
  ( 
    Id int ,
    Name nvarchar(max) ,
    AuthorId int, 
    PRIMARY KEY (id) 
   );

 Create table BlogImages 
  ( 
     Id int ,
     BlogId int ,
     ImageId int 
     PRIMARY KEY (id) 
  );

或者这样:

ALTER TABLE Author ADD PRIMARY KEY  Author(Id);
ALTER TABLE Image ADD PRIMARY KEY  Image(Id);
ALTER TABLE Blog ADD PRIMARY KEY  Blog(Id);
ALTER TABLE BlogImages ADD PRIMARY KEY  BlogImages(Id);

Sql Fiddle Demo

你也可以创建约束主键,这是我喜欢的方式

ALTER TABLE Author ADD CONSTRAINT pk_AuthorID PRIMARY KEY (ID); 
ALTER TABLE Image ADD CONSTRAINT pk_ImageID PRIMARY KEY (ID) ;
ALTER TABLE Blog ADD CONSTRAINT pk_BlogID PRIMARY KEY (ID); 
ALTER TABLE BlogImages ADD CONSTRAINT pk_BlogImagesID PRIMARY KEY (ID); 

答案 1 :(得分:0)

您可以添加查询以创建表格

CREATE TABLE author ( Id int , Name varchar(255) );

当您想要更改作者表时,您可以编写以下查询

ALTER TABLE author ADD test varchar(255)

如果您想将主键添加到ID,可以将以下内容添加到查询中

ALTER TABLE author ADD Primary key author(Id)

答案 2 :(得分:0)

  

您可以在列上添加主键或唯一键约束   在您的查询中使用的父表。