# UPDATE ENTITY

## Syntax <a href="#synopsis" id="synopsis"></a>

```sql
UPDATE ENTITY entity_name
[IN STORE store_name]
[WITH (entity_parameter = value [, ...])];
```

## Description <a href="#description" id="description"></a>

Updates a [store](https://docs.deltastream.io/overview/core-concepts/store "mention") object or entity with the `entity_parameter`. You can only update logical-layer parameters of an entity after it's been created. (Logical-layer parameters are the ones that allow DeltaStream to operate on the entity.) To update physical-layer parameters, you must recreate an entity. See [drop-entity](https://docs.deltastream.io/reference/sql-syntax/ddl/drop-entity "mention") and [create-entity](https://docs.deltastream.io/reference/sql-syntax/ddl/create-entity "mention").

### Arguments <a href="#parameters" id="parameters"></a>

#### entity\_name

The name of the existing entity to update. If the name is case sensitive you must wrap it in double quotes; otherwise the system uses the lower case name.

#### IN STORE store\_name

Optionally, update the entity in a specific store. If the name is case sensitive you must wrap it in double quotes; otherwise the system uses the lower case name.

#### WITH (entity\_parameter = value \[, …​])

Optionally, this clause specifies [#topic\_parameters](#topic_parameters "mention").

### Entity Parameters <a href="#topic_parameters" id="topic_parameters"></a>

| Parameter Name     | Description                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `key.descriptor`   | <p>A qualified <a href="../../data-format-serialization#protocol-buffers-and-descriptors">descriptor</a> name used to decode a record's key, if applicable. Clear the descriptor by specifying <code>NULL</code>.<br><br><strong>Required:</strong> No<br><strong>Default value:</strong> None<br><strong>Type:</strong> String<br><strong>Valid values:</strong> See <a data-mention href="../command/list-descriptors">list-descriptors</a></p> |
| `value.descriptor` | <p>A qualified <a href="../../data-format-serialization#protocol-buffers-and-descriptors">descriptor</a> name used to decode a record's value. Clear the descriptor by specifying <code>NULL</code>.<br><br><strong>Required:</strong> No<br><strong>Default value:</strong> None<br><strong>Type:</strong> String<br><strong>Valid values:</strong> See <a data-mention href="../command/list-descriptors">list-descriptors</a></p>              |

## Examples

#### Add descriptors to a Kafka topic

The following updates the key and value descriptors for the entity `transactions` in the user's default store, `demostore`:

```sh
demodb.public/kafka_store# LIST DESCRIPTORS;
+--------------+--------------+----------+----------+-------------------------------+-------------------------------+
|  Name        |  Source Name |  Type    |  Owner   |  Created At                   |  Updated At                   |
+==============+==============+==========+==========+===============================+===============================+
| PageviewsKey | pb_key       | protobuf | sysadmin | 2024-07-16 21:23:01 +0000 UTC | 2024-07-16 21:23:01 +0000 UTC |
+--------------+--------------+----------+----------+-------------------------------+-------------------------------+
| Pageviews    | pb           | protobuf | sysadmin | 2024-07-16 21:15:50 +0000 UTC | 2024-07-16 21:15:50 +0000 UTC |
+--------------+--------------+----------+----------+-------------------------------+-------------------------------+
demodb.public/kafka_store# UPDATE ENTITY pageviews WITH ('key.descriptor' = pb_key."PageviewsKey", 'value.descriptor' = pb."Pageviews");
+--------+-----------+----------+------------------------------------------+
|  Type  |  Name     |  Command |  Summary                                 |
+========+===========+==========+==========================================+
| entity | pageviews | UPDATE   | entity "pageviews" was successfully      |
|        |           |          | updated in store "kafka_store"           |
+--------+-----------+----------+------------------------------------------+
demodb.public/kafka_store# DESCRIBE ENTITY pageviews;
+-----------+-------------+-----------+---------------------+-------------------+----------+
|  Name     |  Partitions |  Replicas |  Key Descriptor     |  Value Descriptor |  Configs |
+===========+=============+===========+=====================+===================+==========+
| pageviews | 1           | 1         | pb_key.PageviewsKey | pb.Pageviews      | {}       |
+-----------+-------------+-----------+---------------------+-------------------+----------+
```

#### Add descriptor to a Kinesis data stream

The following updates the descriptor for the entity `pageviews` in the store, `kinesis_store`:

```sh
demodb.public/kinesis_store# LIST DESCRIPTORS;
+-----------+--------------+----------+----------+-------------------------------+-------------------------------+
|  Name     |  Source Name |  Type    |  Owner   |  Created At                   |  Updated At                   |
+===========+==============+==========+==========+===============================+===============================+
| Pageviews | pb           | protobuf | sysadmin | 2024-07-16 21:15:50 +0000 UTC | 2024-07-16 21:15:50 +0000 UTC |
+-----------+--------------+----------+----------+-------------------------------+-------------------------------+
demodb.public/kinesis_store# UPDATE ENTITY pageviews WITH ('value.descriptor' = pb."Pageviews");
+--------+-----------+----------+------------------------------------------+
|  Type  |  Name     |  Command |  Summary                                 |
+========+===========+==========+==========================================+
| entity | pageviews | UPDATE   | entity "pageviews" was successfully      |
|        |           |          | updated in store "kinesis_store"         |
+--------+-----------+----------+------------------------------------------+
demodb.public/kinesis_store# DESCRIBE ENTITY pageviews;
+-----------+---------+--------------+
|  Name     |  Shards |  Descriptor  |
+===========+=========+==============+
| pageviews | 1       | pb.Pageviews |
+-----------+---------+--------------+
```

#### Remove descriptors from a Kafka topic

The following sets the key and value descriptors for the entity `transactions` in the user's default store to be `NULL`:

```sh
demodb.public/kafka_store# UPDATE ENTITY pageviews WITH ('key.descriptor' = NULL, 'value.descriptor' = NULL);
+--------+-----------+----------+------------------------------------------+
|  Type  |  Name     |  Command |  Summary                                 |
+========+===========+==========+==========================================+
| entity | pageviews | UPDATE   | entity "pageviews" was successfully      |
|        |           |          | updated in store "kafka_store"           |
+--------+-----------+----------+------------------------------------------+
demodb.public/kafka_store# DESCRIBE ENTITY pageviews;
+-----------+-------------+-----------+-----------------+-------------------+----------+
|  Name     |  Partitions |  Replicas |  Key Descriptor |  Value Descriptor |  Configs |
+===========+=============+===========+=================+===================+==========+
| pageviews | 1           | 1         | <null>          | <null>            | {}       |
+-----------+-------------+-----------+-----------------+-------------------+----------+
```

#### Add value descriptor to entity in a specific Kafka store

The following sets the value descriptor for the entity `xActs` in a specific store, `OtherStore`:

```sh
demodb.public/kinesis_store# LIST DESCRIPTORS;
+-----------+--------------+----------+----------+-------------------------------+-------------------------------+
|  Name     |  Source Name |  Type    |  Owner   |  Created At                   |  Updated At                   |
+===========+==============+==========+==========+===============================+===============================+
| Pageviews | pb           | protobuf | sysadmin | 2024-07-16 21:15:50 +0000 UTC | 2024-07-16 21:15:50 +0000 UTC |
+-----------+--------------+----------+----------+-------------------------------+-------------------------------+
demodb.public/kinesis_store# UPDATE ENTITY "xActs" IN STORE "OtherStore" WITH ('value.descriptor' = pb."Pageviews");
+--------+---------+----------+---------------------------------------+
|  Type  |  Name   |  Command |  Summary                              |
+========+=========+==========+=======================================+
| entity | xActs   | UPDATE   | entity "xActs" was successfully       |
|        |         |          | updated in store "OtherStore"         |
+--------+---------+----------+---------------------------------------+
demodb.public/kafka_store# DESCRIBE ENTITY "xActs" IN STORE "OtherStore";
+-----------+-------------+-----------+-----------------+-------------------+----------+
|  Name     |  Partitions |  Replicas |  Key Descriptor |  Value Descriptor |  Configs |
+===========+=============+===========+=================+===================+==========+
| xActs     | 1           | 2         | <null>          | pb.Pageviews      | {}       |
+-----------+-------------+-----------+-----------------+-------------------+----------+
```
