質問

私のテーブル:

テーブル著者名:ID(整数) author_name(VARCHAR), first_name(VARCHAR), last_name(VARCHAR), preferred_name(VARCHAR).

表弁護士が執筆に参:ID(整数) author1ID(整数) author2ID(整数) paper_ID(整数)(IDの共著論文が参照するこのリンク)

付け加えておきたい外部キー制約などがauthor1IDとauthor2IDに弁護士が執筆に参照IDできます。して定義したテーブルなど:

CREATE TABLE Author(ID INT, author_name VARCHAR(100), preferred_name VARCHAR(100), first_name VARCHAR(100), last_name VARCHAR(100), PRIMARY KEY(ID)) ENGINE=INNODB;

CREATE TABLE CoAuthored(ID INT, author1ID INT, author2ID INT, paper_ID INT);

これが私の試みで作成の外部キー:

ALTER TABLE CoAuthored ADD foreign key (author1ID) references Author(ID) on delete cascade on update cascade;

この実行は、イブレア城、イブレア大してしまっているんですけども試されているタプルを含author1IDが存在しないIDでできることになったとしても、意味の外部キー制約ていない。

そういう?またどこに、どのようなものがあるかのテーブルがENGINE=INNODBの計算書の作成、そうエラ1005できなテーブルの作成.

役に立ちましたか?

解決

https://web.archive.org/web/1/http://articles.techrepublic%2ecom%2ecom/5100-10878_11-6035435.html

設定するために、外部キー関係MySQLのテーブルは、条件を満たす必要がある:

  1. 両方のテーブルのブランド確立の必須要件であるInnoDBテーブルタイプです。

  2. の分野の外部キー関係を必ずインデックス付き

  3. の分野の外部キー関係者と同様にデータ型になります。

重要:非InnoDBテーブルの外部キーの条項が無視されます。

他のヒント

あなたが試すことができ 'ENGINE = InnoDBは'

外部キー制約/キー制約は、InnoDBテーブルで作業のみ:)

- 乾杯

まず第一に:あなたはInnoDBの可能にする外部キーに関係するすべてのテーブルを定義する必要があります。 MyISAMテーブルは、単純に外部キーをサポートしていません。

あなたの問題ここでは(エラー1005)は少し混乱しています。あなたがALTER TABLEを行う場合、それは別のテーブルには言及していない外部キー・フィールドの1に値があることを意味します。

テーブルを作成する場合は、あなたが最初の「親」の表を作成していることを、確認して、2番目と3番目のテーブルます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top