﻿# COMPOSITE_KEY_UNSUPPORTED — backend does not support composite unique keys

Composite unique key enforcement is an optional capability that storage backends may or may not implement. This error is returned when a model defines one…

<em>cyoda-go version <a href="https://github.com/Cyoda/cyoda-go/releases/tag/v0.8.2">0.8.2</a></em>

# errors.COMPOSITE_KEY_UNSUPPORTED

## NAME

COMPOSITE_KEY_UNSUPPORTED — the active storage backend does not support composite unique key enforcement.

## SYNOPSIS

HTTP: `422` `Unprocessable Entity`. Retryable: `no`.

## DESCRIPTION

Composite unique key enforcement is an optional capability that storage backends may or may not implement. This error is returned when a model defines one or more unique keys but the backend does not implement the `CompositeUniqueKeyCapable` interface.

To resolve: use a backend that supports composite unique keys, or remove the unique key definitions from the model.

## SEE ALSO

- errors
- errors.UNIQUE_VIOLATION
- errors.INVALID_UNIQUE_KEY_DEFINITION

## See also

- [`cyoda help errors`](/help/errors/) — Every error response from the Cyoda REST API carries a structured `errorCode` in the `properties` object. Multiple codes may share the same HTTP status. Programmatic handling keys on `errorCode`, not HTTP status.
- [`cyoda help errors UNIQUE_VIOLATION`](/help/errors/unique_violation/) — The entity payload contains field values that collide with an existing entity's composite unique key. Unlike an optimistic-concurrency CONFLICT (which is retryable), a unique-key violation is a permanent data constraint — retrying the same payload without changing the key field values will produce the same result.
- [`cyoda help errors INVALID_UNIQUE_KEY_DEFINITION`](/help/errors/invalid_unique_key_definition/) — Each unique key on a model must have a non-empty list of field paths, a unique name within the model, and field paths that resolve to existing, non-ambiguous fields in the model schema. This error is returned when a submitted model definition violates one of these structural requirements.

## Raw formats

- [`/help/errors/composite_key_unsupported.json`](/help/errors/composite_key_unsupported.json) — full descriptor (matches `GET /help/{topic}` envelope)
- [`/help/errors/composite_key_unsupported.md`](/help/errors/composite_key_unsupported.md) — body only