Skip to main content

INSERT

Use the INSERT command to insert new rows into an existing table.

info
  • For tables with primary keys, if you insert a row with an existing key, the new row will overwrite the existing row.

  • Call FLUSH after INSERT to persist the changes to storage. This ensures that the changes are committed and visible for subsequent reads.

Syntax

INSERT INTO table_name [ ( col_name [ , ... ] ) ]
{ VALUES ( value [ , ... ] ) [ , ( ... ) ] | select_query }
[ RETURNING col_name ];

Parameters

Parameter or clauseDescription
table_nameThe table where you want to insert rows.
col_nameThe column where you want to insert corresponding values.
Currently, you must provide all columns in the table in order or leave this field empty.
valueAn expression or value to assign to the corresponding column.
You can use DESCRIBE to check the order of the columns in the table.
select_queryA SELECT statement that returns the rows you want to insert to the table.
RETURNINGReturns the values of any column based on each inserted row.

Example

The table taxi_trips has three columns:

{
"id": INT NOT NULL,
"distance": DOUBLE PRECISION NOT NULL,
"city": VARCHAR
}

The following statement inserts four new rows into taxi_trips.

INSERT INTO taxi_trips 
VALUES
(1,16,'Dallas'),
(2,23,'New York'),
(3,6,'Chicago'),
(4,9,NULL);

Let's query the table.

SELECT * FROM taxi_trips ORDER BY id;
 id | distance |   city   
----+----------+----------
1 | 16 | Dallas
2 | 23 | New York
3 | 6 | Chicago
4 | 9 |

The following statement inserts all rows in another table name taxi_trips_new into taxi_trips. The two tables have the same column setup. Also, it returns the value of id for the inserted rows.

INSERT INTO taxi_trips 
SELECT * FROM taxi_trips_new
RETURNING id;

Help us make this doc better!