2012-06-19 3 views
1

У меня проблема, я хочу добавить внешний ключ (адрес электронной почты) в таблицу bericht.Проблемы с ALTER TABLE

Email ссылки на адрес электронной почты в vrijwilliger, адрес электронной почты: varchar(80).

ALTER TABLE bericht 
ADD(
FOREIGN KEY (email) REFERENCES vrijwilliger(email)); 

Сообщение об ошибке:

#1005 - Can't create table '.\c5g4westpopintranet\#sql-1494_145.frm' (errno: 150) 

я Don `T получить его, надеюсь, что и может помочь мне :) Заранее спасибо

первый стол

CREATE TABLE bericht(
berichtID int(8), 
onderwerp varchar(255), 
datum date, 
tijd time, 
inhoudbericht, 
email varchar(80), 
PRIMARY KEY(berichtID), 
FOREIGN KEY(email) REFERENCES vrijwilliger(email)); 

второй таблице

CREATE TABLE vrijwilliger(
vrijwilligerID int(8), 
email varchar(80), 
Primary key(vrijwilligerID)); 
+1

Является ли 'vrijwilliger (электронная почта)' 'PRIMARY KEY', или он имеет индекс UNIQUE? –

+2

Вы можете показать схему двух таблиц? –

+1

Просто проверьте тип и размер данных для электронной почты в обеих таблицах. – Subodh

ответ

0

Попробуйте следующий запрос, чтобы изменить таблицу

ALTER TABLE bericht ADD CONSTRAINT email FOREIGN KEY(email) REFERENCES vrijwilliger(email) ON DELETE SET NULL ON UPDATE SET NULL; 

Синтаксис для Alter таблице

ALTER TABLE tbl_name 
    ADD [CONSTRAINT [symbol]] FOREIGN KEY 
    [index_name] (index_col_name, ...) 
    REFERENCES tbl_name (index_col_name,...) 
    [ON DELETE reference_option] 
    [ON UPDATE reference_option] 

См

http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html 
+0

это дает SQL-запрос: ALTER TABLE Bericht ADD CONSTRAINT электронной FOREIGN KEY (электронная почта) ЛИТЕРАТУРЫ vrijwilliger (электронная почта) ON DELETE SET NULL ON UPDATE SET NULL MySQL retourneerde: Documentatie # 1005 - Невозможно создать таблицу. \ C5g4westpopintranet \ # sql-1494_176.frm '(errno: 150) – roy

+0

У вас есть ящик таблицы vrijwilliger перед столом bericht –

+0

да, я сделал. Он уже существует – roy

-1

Попробуйте ниже запрос, он будет работать для вас

CREATE TABLE `vrijwilliger` ( 
vrijwilligerID INT(8), 
email VARCHAR(80), 
PRIMARY KEY(vrijwilligerID), 
UNIQUE KEY (email) 
); 

CREATE TABLE bericht( 
berichtID INT(8), 
onderwerp VARCHAR(255), 
datum DATE, 
tijd TIME, 
inhoudbericht INT(8), 
email VARCHAR(80), 
PRIMARY KEY(berichtID), 
FOREIGN KEY(email) 
REFERENCES vrijwilliger(email)); 
+0

Я получаю сообщение о том, что таблица bericht не может быть удалена. # 1217 - Can not удалить или обновить родительскую строку: ограничение внешнего ключа не выполняется – roy