Какие знаешь ограничения уникальности в БД
Python
Middle
Без компании
Какие знаешь ограничения уникальности в БД
Ответы
В БД есть несколько типов ограничений уникальности:
- **UNIQUE** – гарантирует, что все значения в столбце (или комбинации столбцов) уникальны.
```
CREATE TABLE users (
email VARCHAR(255) UNIQUE,
username VARCHAR(50) UNIQUE
);
```
- **PRIMARY KEY** – автоматически подразумевает `UNIQUE` и `NOT NULL`.
```
CREATE TABLE products (
id SERIAL PRIMARY KEY,
name VARCHAR(100)
);
```
- **UNIQUE INDEX** – создаёт индекс для ускорения проверки уникальности.
```
CREATE UNIQUE INDEX idx_employee_code ON employees(employee_code);
```
- **Составной UNIQUE** – уникальность по комбинации столбцов.
```
ALTER TABLE orders ADD CONSTRAINT unique_order_user
UNIQUE (order_id, user_id);
```
**Нюансы:**
- `NULL` значения считаются уникальными (могут дублироваться, если столбец не `NOT NULL`).
- Вставка дубликата вызывает ошибку `IntegrityError` (в SQLAlchemy – `sqlalchemy.exc.IntegrityError`).
- В PostgreSQL можно создать частичный уникальный индекс (`WHERE` условие).