La seule façon de résoudre ce problème (au moins avec les capacités limitées de MySQL) est d'autoriser NULL
valeurs dans les deux colonnes FK. La création d'un nouvel utilisateur avec une identité principale ressemblerait alors à ceci :
insert into users (id, primary_identity)
values (1, null);
insert into identities (id, name, belongs_to)
values (1, 'foobar', 1);
update users
set primary_identity = 1
where id = 1;
commit;
Le seul inconvénient de cette solution est que vous ne pouvez pas forcer un utilisateur à avoir une identité principale (car la colonne doit être nullable).