The current implementation is correct. According to the '92 std (remembering that the default default value of a column is null) the procedure for constructing a new row is (conceptually)
1. Construct a row containing the default value for each column. 2. For each column value specified in the values clause, replace the default value in the corresponding column of the new row with the specified value. There is no exception for a specified value of null. Regards