Cách duy nhất để giải quyết vấn đề này (ít nhất là với khả năng hạn chế của MySQL) là cho phép NULL
giá trị trong cả hai cột FK. Khi đó, việc tạo người dùng mới với danh tính chính sẽ trông giống như sau:
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;
Hạn chế duy nhất của giải pháp này là bạn không thể buộc người dùng phải có danh tính chính (vì cột cần phải có giá trị rỗng).