Find out which columns must be specified in insert-statement
The BOL documentation for the INSERT grammar has this to say about column_list


  If a column is not in column_list, the Database Engine must be able to
  provide a value based on the definition of the column; otherwise, the
  row cannot be loaded. The Database Engine automatically provides a
  value for the column if the column:
  
  
  Has an IDENTITY property. The next incremental identity value is used.
  Has a default. The default value for the column is used.
  Has a timestamp data type. The current timestamp value is used.
  Is nullable. A null value is used.
  Is a computed column. The calculated value is used.
  


It looks as though your query covers all these cases to me.