title: Insert Row into Postgresql Table with Only Default Values
body: <p><strong>Question:</strong> Is there a way to insert a row in PostgreSQL table using the default values for all columns without specifying any column name?</p>
  
  <p><strong>Background:</strong> If I have a table with two columns that both have default values (or simply accept NULL), I can omit the column name when I insert a row if I wish the value for that column to be the default value. For instance:</p>
  
  <pre><code>CREATE TABLE test_table ( column1 TEXT, column2 TEXT );
  </code></pre>
  
  <p>I can insert into the table by only specifying a value for column1 or column2 and the missing column will be populated with the default value (NULL in this case):</p>
  
  <pre><code>INSERT INTO test_table (column1) VALUES ('foo');
  INSERT INTO test_table (column2) VALUES ('bar');
  </code></pre>
  
  <p>The above will result in two rows: [('foo', NULL), (NULL, 'bar')]. However, if I want to use the default value for both columns, it seems that I have to specify at least one column name and explicitly give it the default value. The follow commands are all legal:</p>
  
  <pre><code>INSERT INTO test_table (column1) VALUES (DEFAULT);
  INSERT INTO test_table (column2) VALUES (DEFAULT);
  INSERT INTO test_table (column1, column2) VALUES (DEFAULT, DEFAULT);
  </code></pre>
  
  <p>I was unable to create a valid command that allowed me to omit all column names. The following attempts are all illegal:</p>
  
  <pre><code>INSERT INTO test_table;
  INSERT INTO test_table () VALUES ();
  </code></pre>
  
  <p>Is there a way to do this or is it explicitly forbidden? I wasn't able to find any documentation for a case like this. Thanks!</p>