2016-05-05 14 views
0

私はお互いを参照する2つのテーブルを作成する必要があると言います(制約が必要です)。制約なしでテーブルを作成し、それを別のステートメントに追加する唯一の方法はありますか?私はいくつかのormsがこれを解決することができることを覚えていますが、SQLと2つのステートメントでのみこれを行うことは可能ですか?まだ作成されていないテーブルを参照するには?

+2

最初に両方のテーブルを作成し、[SQLは既存のカラムに外部キーを追加する]のように 'FK'を追加するように変更します(http://stackoverflow.com/questions/10389477/sql-add-foreign-key-to-existing -column) – lad2025

+0

これは、スキーマ・ダンプを使用してスキーマをインポートすることができないことを意味します。 – Euphorbium

+0

この場合、おそらくスキーマダンプを使用できません。 –

答えて

0

あなたは外部キーなしで最初のテーブルを作成し、両方のテーブルが作成された後にそれらを追加する必要がありますする必要があります

create table t1 (id int not null primary key, id2 int not null); 
create table t2 (id int not null primary key, id1 int not null); 

alter table t1 add foreign key (id2) references t2(id); 
alter table t2 add foreign key (id1) references t1(id); 

グッドニュース:スキーマダンプは(soは私のデータベースです)完璧に動作します:

mysqldump -u root so t1 t2 | mysql -u root so 

mysqldumpDISABLE KEYSENABLE KEYSを適切な場所に挿入するため、エラーは発生しません。

関連する問題