2013-07-31 3 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

Вы должны определить пе 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)); 

Если вы хотите изменить Автор таблицы, то вы можете написать ниже запрос

ALTER TABLE author ADD test varchar(255) 

Если вы хотите добавить первичный ключ к идентификатору вы можете поставить под запрос

ALTER TABLE author ADD Primary key author(Id) 
0

Вы можете либо добавить первичный ключ, либо уникальное ограничение ключа для столбцов на родительских таблицах, которые будут использоваться i n ваш запрос.