From your comments, it seems that you are not actually concerned with "automatically inserting", but rather with "automatically enforcing" the presence1 and exclusivity2 of children.
Since PostgreSQL supports deferred constraints, you can do it declaratively like this.
However, it requires "uglyfying" your model and generally increases the complexity, so enforcing such constraints at the application level is often considered a lesser evil. You may consider hiding this kind of logic behind an API, to remove the possibility of "rogue" clients bypassing it.
1 For given parent row, there must be a child row. In other words, parent class alone cannot be instantiated - it is abstract.
2 For given parent row, there cannot be more than one child row.