"Well, you've omitted all the useful details, but this stuff is not magic. Either that ON INSERT rule is changing null to zero, or you have a trigger on the table that is doing it, or there's something wrong with the initial query (are you sure you put the null in the column you thought you did?)
It would be too much code to insert here, no triggers exist on either the view or the table, the only problem I think can be cause by the default value. Is there a problem when setting the default values as null for a field that is a foreign key to it's own table?
I've tried adding the default value as: ALTER TABLE network ALTER COLUMN parent_network SET DEFAULT NULL::integer; ( and also without ::integer or with ::bigint) but even though the query runs succesfully, when viewing the table with pgAdmin III, the default value does not appear as null, as on other fields. So my concern is that the default value might not work correctly and 0 is still retrieved as the default value.