2013-07-31 63 views
1

我使用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) 

請指導 我需要將外鍵添加到我的表中

回答

1

您必須defi NE 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); 
0

您可以添加查詢創建表

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

當你想改變作者表,然後當你想要添加主鍵ID,你可以把下面的查詢

ALTER TABLE author ADD Primary key author(Id) 
0
你可以寫下面的查詢

ALTER TABLE author ADD test varchar(255) 

您可以在要使用的父表上的列 上添加主鍵或唯一鍵約束你的查詢。