2016-05-05 3 views
0

Lässt sagen, ich muss zwei Tabellen erstellen, die beide aufeinander verweisen (sie benötigen Einschränkungen). Ist die einzige Möglichkeit, die Tabellen ohne die Einschränkungen zu erstellen und sie dann in einer separaten Anweisung hinzuzufügen? Ich erinnere mich, dass einige Orms das selbst lösen können, aber ist es möglich, dies nur mit SQL und in zwei Anweisungen zu tun?Wie verweisen Sie auf eine Tabelle, die noch nicht erstellt wurde?

+2

Erstellen Sie zuerst beide Tabellen, dann ändern Sie sie, um 'FK 'hinzuzufügen, wie [SQL Fremdschlüssel zur vorhandenen Spalte hinzufügen] (http://stackoverflow.com/questions/10389477/sql-add-foreign-key-to-existing -column) – lad2025

+0

Das bedeutet, dass es nicht möglich ist, Schemadumps zum Importieren von Schemas zu verwenden. – Euphorbium

+0

In diesem Fall können Sie wahrscheinlich keinen Schema-Dump verwenden. –

Antwort

0

Sie sollten müssen die Tabellen zuerst ohne Fremdschlüssel erstellen und anhängen, nachdem beide Tabellen erstellt werden:

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); 

gute Nachricht: Ein Schema-Dump perfekt funktioniert (so ist meine Datenbank):

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

Dies ergibt keine Fehler, da mysqldump Inserts DISABLE KEYS und ENABLE KEYS an den richtigen Stellen.

Verwandte Themen