Enforced by the database, and no callbacks need to be called. Combined with 7b9b2c6099 and 294a8b8a6d this resolves gitlab-org/gitlab-ce#31799
Variables shouldn't exist without a project, so a foreign key was added with CASCADE'ing effects.