A única maneira de resolver isso (pelo menos com os recursos limitados do MySQL) é permitir
NULL
valores em ambas as colunas FK. A criação de um novo usuário com uma identidade primária ficaria assim: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;
A única desvantagem dessa solução é que você não pode forçar que um usuário tenha uma identidade primária (porque a coluna precisa ser anulável).