让我们说我需要创建两个彼此引用的表(它们需要约束)。是没有约束的情况下创建表的唯一方法,然后将它们添加到单独的语句中?我记得有些orms可以自己解决这个问题,但是有可能只使用sql和两个语句吗?
答案 0 :(得分:1)
必须先创建表而不使用外键,并在创建两个表后附加它们:
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
这不会导致错误,因为mysqldump
会在适当的位置插入DISABLE KEYS
和ENABLE KEYS
。