On this page  
  
  
The UPDATE statement updates rows in a table.
Required Privileges
The user must have the SELECT and UPDATE privileges on the table.
Synopsis
Parameters
| Parameter | Description | 
|---|---|
| table_name | The name of the table that contains the rows you want to update. | 
| AS name | An alias for the table name. When an alias is provided, it completely hides the actual table name. | 
| column_name | The name of the column whose values you want to update. | 
| a_expr | The new value you want to use, the aggregate function you want to perform, or the value expression you want to use. | 
| DEFAULT | To fill columns with their default values, use DEFAULT VALUESin place ofa_expr. To fill a specific column with its default value, leave the value out of thea_expror useDEFAULTat the appropriate position. | 
| column_name_list | A comma-separated list of column names, in parentheses. | 
| select_with_parens | A comma-separated list of values or value expressions, in parentheses. To update values of multiple rows, use a comma-separated list of parentheses. Each value must match the data type of its column. Also, if column names are listed ( qualified_name_list), values must be in corresponding order; otherwise, they must follow the declared order of the columns in the table. | 
| WHERE a_expr | a_exprmust be an expression that returns Boolean values using columns (e.g.,<column> = <value>). Update rows that returnTRUE.Without a WHEREclause in your statement,UPDATEupdates all rows in the table. | 
| RETURNING target_list | Return values based on rows updated, where target_listcan be specific column names from the table,*for all columns, or a computation on specific columns.To return nothing in the response, not even the number of rows updated, use RETURNING NOTHING. | 
Examples
Update a Single Column in a Single Row
> SELECT * FROM accounts;
+----+----------+----------+
| id | balance  | customer |
+----+----------+----------+
|  1 | 10000.50 | Ilya     |
|  2 |   4000.0 | Julian   |
|  3 |   8700.0 | Dario    |
|  4 |   3400.0 | Nitin    |
+----+----------+----------+
(4 rows)
> UPDATE accounts SET balance = 5000.0 WHERE id = 2;
> SELECT * FROM accounts;
+----+----------+----------+
| id | balance  | customer |
+----+----------+----------+
|  1 | 10000.50 | Ilya     |
|  2 |   5000.0 | Julian   |
|  3 |   8700.0 | Dario    |
|  4 |   3400.0 | Nitin    |
+----+----------+----------+
(4 rows)
Update Multiple Columns in a Single Row
> UPDATE accounts SET (balance, customer) = (9000.0, 'Kelly') WHERE id = 2;
> SELECT * FROM accounts;
+----+----------+----------+
| id | balance  | customer |
+----+----------+----------+
|  1 | 10000.50 | Ilya     |
|  2 |   9000.0 | Kelly    |
|  3 |   8700.0 | Dario    |
|  4 |   3400.0 | Nitin    |
+----+----------+----------+
(4 rows)
> UPDATE accounts SET balance = 6300.0, customer = 'Stanley' WHERE id = 3;
> SELECT * FROM accounts;
+----+----------+----------+
| id | balance  | customer |
+----+----------+----------+
|  1 | 10000.50 | Ilya     |
|  2 |   9000.0 | Kelly    |
|  3 |   6300.0 | Stanley  |
|  4 |   3400.0 | Nitin    |
+----+----------+----------+
(4 rows)
Update Using SELECT Statement
> UPDATE accounts SET (balance, customer) = 
    (SELECT balance, customer FROM accounts WHERE id = 2) 
     WHERE id = 4;
> SELECT * FROM accounts;
+----+----------+----------+
| id | balance  | customer |
+----+----------+----------+
|  1 | 10000.50 | Ilya     |
|  2 |   9000.0 | Kelly    |
|  3 |   6300.0 | Stanley  |
|  4 |   9000.0 | Kelly    |
+----+----------+----------+
(4 rows)
Update with Default Values
> UPDATE accounts SET balance = DEFAULT where customer = 'Stanley';
> SELECT * FROM accounts;
+----+----------+----------+
| id | balance  | customer |
+----+----------+----------+
|  1 | 10000.50 | Ilya     |
|  2 |   9000.0 | Kelly    |
|  3 | NULL     | Stanley  |
|  4 |   9000.0 | Kelly    |
+----+----------+----------+
(4 rows)
Update All Rows
Warning:
If you do not use the WHERE clause to specify the rows to be updated, the values for all rows will be updated.> UPDATE accounts SET balance = 5000.0;
> SELECT * FROM accounts;
+----+---------+----------+
| id | balance | customer |
+----+---------+----------+
|  1 |  5000.0 | Ilya     |
|  2 |  5000.0 | Kelly    |
|  3 |  5000.0 | Stanley  |
|  4 |  5000.0 | Kelly    |
+----+---------+----------+
(4 rows)
Update and Return Values
In this example, the RETURNING clause returns the id value of the row updated. The language-specific versions assume that you have installed the relevant client drivers.
Tip:
This use of RETURNING mirrors the behavior of MySQL's last_insert_id() function.Note:
When a driver provides a query() method for statements that return results and an exec() method for statements that do not (e.g., Go), it's likely necessary to use the query() method for UPDATE statements with RETURNING.> UPDATE accounts SET balance = DEFAULT WHERE id = 1 RETURNING id;
+----+
| id |
+----+
|  1 |
+----+
(1 row)
# Import the driver.
import psycopg2
# Connect to the "bank" database.
conn = psycopg2.connect(
    database='bank',
    user='root',
    host='localhost',
    port=26257
)
# Make each statement commit immediately.
conn.set_session(autocommit=True)
# Open a cursor to perform database operations.
cur = conn.cursor()
# Update a row in the "accounts" table
# and return the "id" value.
cur.execute(
    'UPDATE accounts SET balance = DEFAULT WHERE id = 1 RETURNING id'
)
# Print out the returned value.
rows = cur.fetchall()
print('ID:')
for row in rows:
    print([str(cell) for cell in row])
# Close the database connection.
cur.close()
conn.close()
The printed value would look like:
ID:
['1']
# Import the driver.
require 'pg'
# Connect to the "bank" database.
conn = PG.connect(
    user: 'root',
    dbname: 'bank',
    host: 'localhost',
    port: 26257
)
# Update a row in the "accounts" table
# and return the "id" value.
conn.exec(
    'UPDATE accounts SET balance = DEFAULT WHERE id = 1 RETURNING id'
) do |res|
# Print out the returned value.
puts "ID:"
    res.each do |row|
        puts row
    end
end
# Close communication with the database.
conn.close()
The printed value would look like:
ID:
{"id"=>"1"}
package main
import (
        "database/sql"
        "fmt"
        "log"
        _ "github.com/lib/pq"
)
func main() {
        //Connect to the "bank" database.
        db, err := sql.Open(
                "postgres",
                "postgresql://root@localhost:26257/bank?sslmode=disable"
        )
        if err != nil {
                log.Fatal("error connecting to the database: ", err)
        }
        // Update a row in the "accounts" table
        // and return the "id" value.
        rows, err := db.Query(
                "UPDATE accounts SET balance = DEFAULT WHERE id = 1 RETURNING id",
        )
        if err != nil {
                log.Fatal(err)
        }
        // Print out the returned value.
        defer rows.Close()
        fmt.Println("ID:")
        for rows.Next() {
                var id int
                if err := rows.Scan(&id); err != nil {
                        log.Fatal(err)
                }
                fmt.Printf("%d\n", id)
        }
}
The printed value would look like:
ID:
1
var async = require('async');
// Require the driver.
var pg = require('pg');
// Connect to the "bank" database.
var config = {
  user: 'root',
  host: 'localhost',
  database: 'bank',
  port: 26257
};
pg.connect(config, function (err, client, done) {
  // Closes communication with the database and exits.
  var finish = function () {
    done();
    process.exit();
  };
  if (err) {
    console.error('could not connect to cockroachdb', err);
    finish();
  }
  async.waterfall([
    function (next) {
      // Update a row in the "accounts" table
      // and return the "id" value.
      client.query(
        `UPDATE accounts SET balance = DEFAULT WHERE id = 1 RETURNING id`,
        next
      );
    }
  ],
  function (err, results) {
    if (err) {
      console.error('error updating and selecting from accounts', err);
      finish();
    }
    // Print out the returned value.
    console.log('ID:');
    results.rows.forEach(function (row) {
      console.log(row);
    });
    finish();
  });
});
The printed value would like:
ID:
{ id: '1' }