---
title: "UpdateDatabase"
description: "Update a database"
canonical: "https://pgbeam.com/docs/go-sdk/databases/updateDatabase"
last-updated: "2026-10-29T19:01:20.000Z"
---

# UpdateDatabase

> Update a database

URL: https://pgbeam.com/docs/go-sdk/databases/updateDatabase

{/* Auto-generated from OpenAPI. Do not edit. Run `pnpm generate:sdk-docs` to regenerate. */}

Partially updates a database connection. Only provided fields are modified.

## Usage

```go
result, err := client.Databases.UpdateDatabase(ctx, "prj_xxx", "db_xxx", pgbeam.UpdateDatabaseRequest{})
```

## Parameters

| Parameter            | Type                           | Required | Description                                                                                                                                                                                                        |
| -------------------- | ------------------------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| ctx                  | `context.Context`              | Yes      | Request context                                                                                                                                                                                                    |
| projectID            | `string`                       | Yes      | Unique project identifier (prefixed, e.g. prj_xxx).                                                                                                                                                                |
| databaseID           | `string`                       | Yes      | Unique database identifier (prefixed, e.g. db_xxx).                                                                                                                                                                |
| body                 | `pgbeam.UpdateDatabaseRequest` | Yes      | Request body                                                                                                                                                                                                       |
| body.Host            | `*string`                      | No       | Updated PostgreSQL host.                                                                                                                                                                                           |
| body.Port            | `*int`                         | No       | Updated PostgreSQL port.                                                                                                                                                                                           |
| body.Name            | `*string`                      | No       | Updated PostgreSQL database name.                                                                                                                                                                                  |
| body.Username        | `*string`                      | No       | Updated PostgreSQL username.                                                                                                                                                                                       |
| body.Password        | `*string`                      | No       | Updated PostgreSQL password.                                                                                                                                                                                       |
| body.SslMode         | `*pgbeam.SSLMode`              | No       | PostgreSQL SSL connection mode.                                                                                                                                                                                    |
| body.Role            | `*pgbeam.DatabaseRole`         | No       | Database role. Primary receives writes, replicas receive reads.                                                                                                                                                    |
| body.PoolRegion      | `*string`                      | No       | Region where the connection pool is maintained (near the database). When set and different from the client's edge region, queries are relayed through the pool region's data plane. Empty means direct connection. |
| body.QueryTimeoutMs  | `*int`                         | No       | Query timeout in milliseconds. 0 means disabled.                                                                                                                                                                   |
| body.AutoReadRouting | `*bool`                        | No       | Auto-route SELECT queries to read replicas.                                                                                                                                                                        |
| body.CacheConfig     | `*pgbeam.CacheConfig`          | No       | Query cache configuration.                                                                                                                                                                                         |
| body.PoolConfig      | `*pgbeam.PoolConfig`           | No       | Connection pool configuration.                                                                                                                                                                                     |

## Response

`(*pgbeam.Database, error)`: database updated.

## Example

```go
import pgbeam "go.pgbeam.com/sdk"

client := pgbeam.NewClient(&pgbeam.ClientOptions{
  APIKey: "pbu_...",
})

host := "db.example.com"
port := 5432
name := "mydb"
username := "pgbeam"
poolRegion := "us-east-1"
result, err := client.Databases.UpdateDatabase(ctx, "prj_xxx", "db_xxx", pgbeam.UpdateDatabaseRequest{
    Host: &host,
    Port: &port,
    Name: &name,
    Username: &username,
    PoolRegion: &poolRegion,
  })
if err != nil {
  log.Fatal(err)
}
fmt.Println(result)
```

## Errors

| Status | Description                                                                                                                                                                                                                                                                                           |
| ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 400    | The request was rejected. `code` is `INVALID_INPUT`, and `errors` names the offending fields when the failure was a validation one.                                                                                                                                                                   |
| 401    | Missing or invalid authentication. `code` is `UNAUTHORIZED`.                                                                                                                                                                                                                                          |
| 403    | The caller is authenticated but not allowed to perform this operation. `code` is `FORBIDDEN` when the caller's role is insufficient, and `PLAN_LIMIT_REACHED` when the organization's plan is what stands in the way. The two are answered differently, so branch on the code rather than the status. |
| 404    | The resource does not exist, or the caller is not entitled to know that it does. `code` is `NOT_FOUND`.                                                                                                                                                                                               |
| 412    | The `If-Match` entity tag does not match the current representation, so the resource changed after the read this write was based on. Nothing was modified. `code` is `PRECONDITION_FAILED`. Re-read the resource, re-apply the change, and retry with the new tag.                                    |
| 413    | The request body exceeds the 2 MB limit. `code` is `PAYLOAD_TOO_LARGE`.                                                                                                                                                                                                                               |
| 415    | The request body is not JSON, or carries a body without declaring a Content-Type. `code` is `UNSUPPORTED_MEDIA_TYPE`.                                                                                                                                                                                 |
| 429    | Rate limited. `code` is `RATE_LIMITED`.                                                                                                                                                                                                                                                               |
| 500    | The request failed for a reason on our side. `code` is `INTERNAL_ERROR`. Quote `request_id` when reporting it.                                                                                                                                                                                        |