2011-08-05 10 views
0

私は3つのテーブルがあります: - PRIMARY KEY( 'ID')既存のテーブルに外部キーを追加するにはどうすればよいですか?

2.連絡先(ID、連絡先、検証)

1.ユーザー(ID、名前、生年月日) - PRIMARY KEY( 'ID')

3. UserContact(USER_ID、Contact_id) - 主キーまたはForiegnキー

問題は、UserContactテーブルを作成する際に、プライマリキーまたは外部キーを気にしなかったことです。したがって、ZendフレームワークのUserContactテーブルにレコードを挿入する際に、次のエラーが発生しています。

今、私は外部キーとしてUSER_IDとContact_idをUserContactテーブルを変更し、を作るのMySQLスクリプトを作成したいテーブルには主キーを持っている必要がありますが、どれも

を認めませんでしたユーザーテーブルと連絡先テーブルから削除します。このスクリプトを書く方法。私はphpMyAdminを使用しています。

おかげ

+0

-

ALTER TABLE UserContact ADD CONSTRAINT FK_UserContact_User FOREIGN KEY (user_id) REFERENCES user(id); ALTER TABLE UserContact ADD CONSTRAINT FK_UserContact_Contact FOREIGN KEY (contact_id) REFERENCES user(id); 

は、主キーを追加します。保護された$ _primary = 'id'; //プライマリキー 、mysqlで宣言するo nlyはクエリに速度を追加します – max4ever

答えて

5

ALTER TABLE Syntax

は、外部キーを追加します - 私は間違っていないよ場合にのみZendのフレームワークでそれを宣言する必要があり

ALTER TABLE UserContact 
    ADD PRIMARY KEY (User_id, Contact_id); 
+0

InnoDBだけがそれらをサポートしていることは言うまでもないでしょう。 MySQLはFKをサポートするインデックスを作成するのですか、それとも手作業で行う必要がありますか? –

+0

はい、InnoDbテーブルだけが外部キーをサポートしています。 FKを作成すると、索引が自動的に作成されます。 – Devart

関連する問題